у меня такой класс
class Point:
def __init__(self, x,y,z):
self.x = x
self.y = y
self.z = z
где x, y, z равны float
и я хочу сделать это:
p = Point(0,0,0)
arr_p = np.array(p)
arr_pts = np.array([p])
что я ожидаю:
>>> arr_p
array([0., 0., 0.])
>>> arr_pts
array([[0., 0., 0.]])
и оба имеют dtype=np.float64
Как я могу настроить свой класс для достижения этого?
Что я пробовал:
Я видел некоторые комментарии в numpy.array
object : array_like
An array, any object exposing the array interface, an object whose
__array__ method returns an array, or any (nested) sequence.
поэтому я просто добавил
def __array__(self):
return [self.x, self.y, self.z]
Но это не работает .... Я не знаю, что это значит под array
, это уровень C, который нам нужен для управления разметкой памяти?