首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >多维数组,使用范围,同时具有设置的开始、停止和步骤?

多维数组,使用范围,同时具有设置的开始、停止和步骤?
EN

Stack Overflow用户
提问于 2014-03-12 20:06:55
回答 1查看 143关注 0票数 4

伙计们,

我自己正在学习numpy,并且对它有了很好的处理,即使在阅读了文档之后,也没有一些概念。我试图通过这个矩阵,使每第二行都有10s,贯穿整个矩阵。

代码语言:javascript
代码运行次数:0
运行
复制
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)]来遍历矩阵,但是如何将这两种方法结合起来呢?

如何在使用范围同时设置开始、停止和步骤的同时,逐步遍历多维数组?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-12 20:11:04

我想你想要的是:

代码语言:javascript
代码运行次数:0
运行
复制
>>> 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.]])'

问题是:

代码语言:javascript
代码运行次数:0
运行
复制
 >>> range(xmax)::
       File "<stdin>", line 1
        range(xmax)::
                   ^
    SyntaxError: invalid syntax

您需要显式地将切片语法应用于范围:

代码语言:javascript
代码运行次数:0
运行
复制
 >>> range(xmax)[::2]
 [0, 2, 4]

作为一般参考,你可以:

代码语言:javascript
代码运行次数:0
运行
复制
data[np.arange(start1, end1, step1), np.arange(start2, end2, step2)]

其中,第一个np.arange选择行,第二个np.aranage选择列。

几个可能有用的参考资料:

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22362653

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档