python – 向Numpy ndarray添加元数据注释

前端之家收集整理的这篇文章主要介绍了python – 向Numpy ndarray添加元数据注释前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个三个大型阵列的Numpy ndarray,我只想将路径存储到某处生成数据的文件中.一些玩具数据:
A = array([[  6.52479351e-01,6.54686928e-01,6.56884432e-01,...,2.55901861e+00,2.56199503e+00,2.56498647e+00],[             nan,nan,9.37914686e-17,1.01366425e-16,3.20371075e-16,-6.33655223e-17],8.52057308e-17,4.26943463e-16,1.51422386e-16,1.55097437e-16]],dtype=float32)

我不能将它作为数组附加到ndarray,因为它需要与其他三个相同的长度.

我可以添加np.zeros(len(A [0]))并将第一个值作为字符串,以便我可以用A [-1] [0]检索它,但这看起来很荒谬.

是否有一些元数据键我可以用来存储像/Documents/Data/foobar.txt这样的字符串’所以我可以用像A.Metadata.comment这样的东西来检索它?

谢谢!

解决方法

TobiasR的评论是最简单的方法,但您也可以将ndarray子类化.见 numpy documentationthis question
class MetaArray(np.ndarray):
    """Array with Metadata."""

    def __new__(cls,array,dtype=None,order=None,**kwargs):
        obj = np.asarray(array,dtype=dtype,order=order).view(cls)                                 
        obj.Metadata = kwargs
        return obj

    def __array_finalize__(self,obj):
        if obj is None: return
        self.Metadata = getattr(obj,'Metadata',None)

用法示例:

>>> a = MetaArray([1,2,3],comment='/Documents/Data/foobar.txt')
>>> a.Metadata
{'comment': '/Documents/Data/foobar.txt'}

猜你在找的Python相关文章