试图避免使用numpy数组的for循环

时间:2017-02-27 11:11:47

标签: python arrays indexing

我正在寻找一种访问数据数组的方法,使用包含有趣索引的数组数组,而不进行for循环。数组数组是dtype = object,因为每个单独的数组都有不同的大小。 我构建了一个简单的例子:

myArrayData = np.random.rand(100) ### a classical np.array
myArrayOfIndex = np.array( [ np.array([1,2,3],dtype=np.int32),
                             np.array([4,5,6,7],dtype=np.int32) ] )
### the array of array containing the index
### it is automatically a dtype=object because of the sizes of the sub-array

我无法使用此'对象数组'访问我的数据:

myArrayData[ myArrayOfIndex ]

myArrayOfIndex可以包含所有大小的数组,甚至是[]。 当然我可以在myArrayOfIndex上做一个循环,但它不是很有效。

有没有办法让它没有循环?

或者我应该考虑以另一种有效的方式组织我的数据/索引(这里使用的方法简单直观......但不能正常工作)!?

我正在编辑我的问题,因为它可能太“普遍”了:

实际上我有几个myArrayData:myArrayData1,...,myArrayDataN每个都包含我所有“粒子”的不同“物理”属性。 myArrayOfIndex包含子数组,每个子数组都包含链接到数据的“粒子”索引,但它们不一定具有相同数量的“粒子”。

目前我在myArrayOfIndex上循环并提取数据:

np.array( [ myArrayData[i] for i in myArrayOfIndex ] )

但有些人可以注意到,在np.array上做一个循环可以被认为是一种罪恶! (:))所以我很想知道是否有办法避免这种for循环。优化我的代码与学习python相同。

0 个答案:

没有答案