多维数组,使用范围,同时具有集合的开始、停止和步长



伙计们,

我正在自己学习numpy,并对它有了很好的掌握,即使在阅读了文档之后,我仍然无法理解一些概念。我试着遍历这个矩阵,让每一行都是10。

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)]来使用花哨的索引来遍历矩阵但我如何结合这两种方法?

如何使用range遍历多维数组,同时设置start, stop和step?

我想你想要的是:

>>> 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选择列。

一些可能有帮助的引用:

  • Numpy数组索引
  • 暂定Numpy教程:切片
  • Scipy课堂讲稿:切片
  • @unutubu的回答:

相关内容

  • 没有找到相关文章

最新更新