【发布时间】:2017-02-17 16:31:15
【问题描述】:
假设我想遍历一个 numpy 数组并打印每个项目。稍后我将根据一些规则使用它来操作数组中的 (i,j) 条目。
我已阅读 numpy 文档,您似乎可以使用与列表类似的索引(或切片)轻松访问数组中的各个元素。但是,当我尝试循环访问每个 (i,j) 条目时,似乎无法对它执行任何操作。
row= 3
column = 2
space = np.random.randint(2, size=(row, column))
print space, "\n"
print space[0,1]
print space[1,0] #test if I can access indiivdual elements
输出:
[[1,1
[1,1
[0,0]]
1
1
例如,使用上面的方法,我想遍历每一行和每一列并打印每个条目。我会考虑使用以下内容:
for i in space[0:row,:]:
for j in space[:,0:column]:
print space[i,j]
我得到的输出是
[1,1]
[1,1]
[1,1]
[1,1]
[1,1]
[1,1]
[1,1]
[1,1]
[1,1]
显然这不起作用。我认为问题在于我正在访问整个行和列,而不是任何给定行和列中的元素。我已经浏览了几个小时的 numpy 文档,但我仍然不确定如何去做。
我主要关心的是我想通过使用循环和一些条件来更改每个 (i,j) 条目,例如(使用上述循环):
for i in space[0:row,:]:
for j in space[:,0:column]:
if [i+1,j] + [i,j+1] == 2:
[i,j] = 1
【问题讨论】:
-
i和j是索引。您需要迭代i in range(row)和j in range(column)。然后您可以将space[i, j]设置为您想要的任何值。 -
我应该补充一点,将循环用于简单任务会破坏使用 numpy 的目的,因为您将失去 numpy 提供的任何速度优势。了解 numpy indexing,它允许您使用索引列表分配到多个位置,这将比使用循环快得多
-
我已经阅读该页面有一段时间了。我无法就如何做到这一点建立联系。我应该在哪个标题下查看该链接?或者,如果你能提供一个如何做类似事情的例子,它会对我有很大的启发。谢谢!
标签: arrays python-2.7 numpy iteration