伙计们,
我自己正在学习numpy,并且对它有了很好的处理,即使在阅读了文档之后,也没有一些概念。我试图通过这个矩阵,使每第二行都有10s,贯穿整个矩阵。
data = np.ones(50).reshape(5,10)
xmax = data.shape[0]
ymax = data.shape[1]
data[range(xmax)::2,range(ymax)] = 10
最后一行代码不正确。我知道如何使用分号- list[start:stop:step]
和我知道如何使用漂亮的索引来使用逗号ndarray[range(end1),range(end2)]
来遍历矩阵,但是如何将这两种方法结合起来呢?
如何在使用范围同时设置开始、停止和步骤的同时,逐步遍历多维数组?
发布于 2014-03-12 12:11:04
我想你想要的是:
>>> data[range(xmax)[::2],:] = 10
>>> data
array([[ 10., 10., 10., 10., 10., 10., 10., 10., 10., 10.],
[ 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.],
[ 10., 10., 10., 10., 10., 10., 10., 10., 10., 10.],
[ 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.],
[ 10., 10., 10., 10., 10., 10., 10., 10., 10., 10.]])'
问题是:
>>> range(xmax)::
File "<stdin>", line 1
range(xmax)::
^
SyntaxError: invalid syntax
您需要显式地将切片语法应用于范围:
>>> range(xmax)[::2]
[0, 2, 4]
作为一般参考,你可以:
data[np.arange(start1, end1, step1), np.arange(start2, end2, step2)]
其中,第一个np.arange
选择行,第二个np.aranage
选择列。
几个可能有用的参考资料:
https://stackoverflow.com/questions/22362653
复制相似问题