【发布时间】:2015-11-05 08:36:41
【问题描述】:
我正在使用 numpy.ndenumerate 进行数组元素迭代:
a = np.ones((10,10,10))
for (x,y,z), value in numpy.ndenumerate(a):
do stuff with x,y,z and value
如何只迭代指定的元素值?例如,如果数组是二进制的,我如何遍历所有的?
目前我正在使用类似的东西:
specified = np.nonzero(a) #or np.where(a == some_value)
for i in xrange(np.count_nonzero(a)):
do stuff with x,y,z = specified[0][i], specified[1][i], specified[2][i]
and value = a[x,y,z]
这显然很丑陋,我相信有一个不错的捷径。
【问题讨论】:
-
只对数组的“1”进行操作的好方法是使用布尔掩码:
I = a==1。a[I]是这些值的平面数组;a[I]=...为这些元素分配新值。
标签: python arrays numpy iteration