将字段添加到结构化numpy数组的最简洁方法是什么?它可以破坏性地完成,还是需要创建一个新的数组并复制现有的字段?每个字段的内容是否连续存储在内存中,以便可以有效地完成这种复制?
我知道关于这个主题已经存在一个问题(将一个字段添加到结构化numpy数组中的最简洁方法),请参阅
但我对那里给出的答案有疑问......
如果您正在使用numpy 1.3,那么还有numpy.lib.recfunctions.append_fields()
我仍然有numpy 1.3,但它不识别这个功能,我也没有在numpy的文档中找到任何关于它的东西.这个功能怎么了?还有其他功能可以做同样的事情吗?
我想继承numpy ndarray.但是,我无法更改阵列.为什么self = ...不改变阵列?谢谢.
import numpy as np
class Data(np.ndarray):
def __new__(cls, inputarr):
obj = np.asarray(inputarr).view(cls)
return obj
def remove_some(self, t):
test_cols, test_vals = zip(*t)
test_cols = self[list(test_cols)]
test_vals = np.array(test_vals, test_cols.dtype)
self = self[test_cols != test_vals] # Is this part correct?
print len(self) # correct result
z = np.array([(1,2,3), (4,5,6), (7,8,9)],
dtype=[('a', int), ('b', int), ('c', int)])
d = Data(z)
d.remove_some([('a',4)])
print len(d) # output the same size as original. Why?
Run Code Online (Sandbox Code Playgroud)