1

我有一个 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]])

我应该补充一点,我进行这种操作的动机是计算数组中对象的质心。

4

1 回答 1

2

通常,当我有多个属于一起的数量并且我想从 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 保存此表非常简单方便,因为您的数据已经被标记。

于 2012-04-07T17:59:25.280 回答