我有一系列自定义对象。如何获取包含这些对象的特定属性值的新数组?
示例:
import numpy as np
class Pos():
def __init__(self, x, y):
self.x = x
self.y = y
arr = np.array( [ Pos(0,1), Pos(2,3), Pos(4,5) ] )
# Magic line
xy_arr = .... # arr[ [arr.x,arr.y] ]
print xy_arr
# array([[0,1],
[2,3],
[4,5]])
我应该补充一点,我这样做的动机是计算数组中对象的质心。
答案 0 :(得分:1)
通常,当我有多个属于一起的数量并且我想从numpys索引功能中受益时,我使用记录数组。请注意,如果你做了很多追加/删除操作,numpy在速度方面可能相当无效。
如果我理解你的评论,这是一个例子,其中第三个选择了两个值:
import numpy as np
# create a table for your data
dt = np.dtype([('A', np.double), ('x', np.double), ('y', np.double)])
table = np.array([(1,1,1), (2,2,2), (3,3,3)], dtype=dt)
# define a selection mask
selection = table['A'] > 1.5
columns = ['x', 'y']
print table[selection][columns]
一个很好的副作用是使用h5py保存此表非常简单方便,因为您的数据已被标记。