Python noobie here :)试图弄清楚如何简洁地做事。
>>> f = np.zeros((2,2), dtype=int)
>>> f[0][1] = 100
>>> f[1][0] = 200
>>> print f
[[ 0 100]
[200 0]]
>>> f1 = # do something special
>>> print f1
[[ 0 101]
[201 0]]
谢谢!
答案 0 :(得分:6)
稍微好一点的方法是使用boolean indexing:
>>> import numpy as np
>>> a = np.array([[0,100],[200,0]])
>>> a[a!=0] += 1
>>> a
array([[ 0, 101],
[201, 0]])
Matlab论坛很好地解释了它改进的原因,其中find
扮演与np.where
类似的角色。例如,在this Matlab thread中提到使用布尔数组调用find
。 find
然后执行一些额外的功能来提取索引。然后使用这些索引在numpy中执行所谓的“花式索引”。但是,数组本身可以使用布尔数组以这种奇特的方式编入索引。
答案 1 :(得分:4)
您可以使用numpy.where
找出值不为0的位置,然后将1添加到所有这些值。
>>> a = np.array([[0,100],[200,0]])
>>> a
array([[ 0, 100],
[200, 0]])
>>> a[np.where(a != 0)] += 1
>>> a
array([[ 0, 101],
[201, 0]])