我有一个三个大型阵列的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 documentation或
this 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'}