访问numpy数组中对象的属性

时间:2012-04-07 00:44:22

标签: arrays numpy

我有一系列自定义对象。如何获取包含这些对象的特定属性值的新数组?

示例:

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]])

我应该补充一点,我这样做的动机是计算数组中对象的质心。

1 个答案:

答案 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保存此表非常简单方便,因为您的数据已被标记。