Geo*_*rge 6 python numpy numpy-ndarray
我正在尝试使用 setattr 将属性添加到 Numpy ndarray,但出现错误:
import numpy as np
x = np.array([1, 2, 4])
setattr(x, 'new_attr', 1)
Run Code Online (Sandbox Code Playgroud)
AttributeError:numpy.ndarray 对象没有属性 new_attr
如何向 Numpy ndarray 添加新属性?
使用您的示例并参考简单示例 - 向 ndarray 添加额外属性,您可以做的是
class YourArray(np.ndarray):
def __new__(cls, input_array, your_new_attr=None):
obj = np.asarray(input_array).view(cls)
obj.your_new_attr = your_new_attr
return obj
def __array_finalize__(self, obj):
if obj is None: return
self.your_new_attr = getattr(obj, 'your_new_attr', None)
Run Code Online (Sandbox Code Playgroud)
进而
>>> x = np.array([1, 2, 4])
>>> x_ = YourArray(x)
>>> x_.your_new_attr = 2
>>> x_.your_new_attr
2
Run Code Online (Sandbox Code Playgroud)
或者直接在实例化时
>>> # x_ = YourArray([1, 2, 4], your_new_attr=3) works as well
>>> x_ = YourArray(x, your_new_attr=3)
>>> x_.your_new_attr
3
Run Code Online (Sandbox Code Playgroud)