繁体   English   中英

将 Python class 转换为 Numpy 阵列

[英]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的文档字符串中我们可以看到对第一个参数的要求

objectarray_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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM