我用python创建了一个多维numpy数组,如下所示:
>>> import numpy as np
>>> a = np.zeros((3,5))
>>> print a
>>>[[ 0. 0. 0. 0. 0.]
[ 0. 0. 0. 0. 0.]
[ 0. 0. 0. 0. 0.]]`
我想在a[1:2]和a[2:3]处用++1加1。结果应该如下所示:
>>>[[ 0. 0. 1. 1. 1.]
[ 1. 1. 1. 1. 0.]
[ 0. 0. 0. 0. 0.]]
我怎么能找到这个?有人能帮帮我吗?
谢谢你,
krank42
最好的答案很大程度上取决于为什么?
您可以flatten
,在一行上进行更改,reshape
:
af = a.flatten()
af[2:9] += 1
a = af.reshape(a.shape)
在这种情况下,您必须自己计算索引。在这种情况下很简单:[0,2]变成row x #columns + column = 0 x 5 + 2 = 2,[1,4]变成1 x 5 + 4 = 9。请注意,python中的索引从0开始,而不是从1开始。第一行第一列为[0,0]
有一些辅助函数用于索引数学,在这种情况下最接近的是numpy.ravel_multi_index
,但对于2D情况可能有点太复杂了。