I am trying to make a scatter plot with the list of coordinates I have. I'm just confused how to separate these coordinates into x and y so that I can plug it into the plt.scatter() function, especially considering it is a nested array of arrays.
array([array([1., 0.]), array([ 0., -1.]), array([-1., 0.]),
array([-1., -1.]), array([ 1., -1.]), array([ 0., -2.]),
array([-2., 0.]), array([2., 0.]), array([-2., -1.]),
array([ 2., -1.]), array([-1., -2.]), array([ 1., -2.]),
array([-2., -2.]), array([ 2., -2.]), array([ 0., -3.]),
array([3., 0.]), array([-3., 0.]), array([ 1., -3.]),
array([-1., -3.]), array([ 3., -1.]), array([-3., -1.]),
array([-2., -3.]), array([ 3., -2.]), array([-3., -2.]),
array([ 2., -3.]), array([-4., 0.]), array([4., 0.]),
array([-4., -1.]), array([ 4., -1.]), array([-3., -3.]),
array([ 3., -3.]), array([ 4., -2.]), array([-4., -2.]),
array([ 4., -3.]), array([-4., -3.]), array([-1., -5.]),
array([ 1., -5.]), array([-5., -1.]), array([-5., -2.]),
array([-5., -3.]), array([ 3., -5.]), array([-3., -5.]),
array([-6., 0.]), array([-6., -1.]), array([-6., -2.]),
array([-6., -3.]), array([-5., -5.]), array([-7., -1.]),
array([ 1., -7.]), array([-1., -7.]), array([-7., -2.]),
array([-3., -7.]), array([-7., -3.]), array([ 3., -7.]),
array([-7., -5.]), array([-5., -7.]), array([-1., -9.]),
array([ 1., -9.]), array([ 3., -9.]), array([-3., -9.]),
array([-7., -7.]), array([-5., -9.]), array([ 1., -11.]),
array([ -1., -11.]), array([ -3., -11.]), array([ 3., -11.]),
array([-7., -9.]), array([ -5., -11.]), array([ -7., -11.])],
dtype=object)
import numpy as np
import matplotlib.pyplot as plt
arr = np.array([
0,
np.array([0., 3.]),
np.array([2., 4.]),
np.array([-3., -1.]),
np.array([-4., 2.]),
np.array([2., 0.]),
np.array([-2., -2.])
], dtype=object)[1:]
print(repr(arr))
prints:
array([array([0., 3.]), array([2., 4.]), array([-3., -1.]),
array([-4., 2.]), array([2., 0.]), array([-2., -2.])],
dtype=object)
then you can use np.stack
(as others have already suggested in the comments) to convert arr
to a 2d-array:
arr = np.stack(arr)
print(repr(arr))
which prints:
array([[ 0., 3.],
[ 2., 4.],
[-3., -1.],
[-4., 2.],
[ 2., 0.],
[-2., -2.]])
and is much easier to plot:
plt.scatter(arr[:, 0], arr[:, 1])