[英]Cast a Python class to Numpy Array
我可以将 python class 转换为 numpy array
吗?
from dataclasses import dataclass
import numpy as np
@dataclass
class X:
x: float = 0
y: float = 0
x = X()
x_array = np.array(x) # would like to get an numpy array np.array([X.x,X.y])
在最后一步,我想获得一个数组np.array([Xx, Xy])
。 相反,我得到array(X(x=0, y=0), dtype=object)
。
我可以为dataclass
提供方法,以便转换按需要工作(或重载dataclass
的现有方法之一)吗?
从numpy.array
的文档字符串中我们可以看到对第一个参数的要求
object
:array_like
一个数组,任何 object 暴露数组接口,一个 object 其
__array__
方法返回一个数组,或任何(嵌套)序列。
所以我们可以定义一个__array__
方法,比如
@dataclass
class X:
x: float = 0
y: float = 0
def __array__(self) -> np.ndarray:
return np.array([self.x, self.y])
它将被np.array
使用。 这应该适用于任何自定义 Python class 我猜。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.