python 如何迭代numpy数组,每次循环得到两个值?

oogrdqng  于 2023-01-16  发布在  Python
关注(0)|答案(3)|浏览(227)

我想象着

import numpy as np
x = np.arange(10)
for i, j in x:
     print(i,j)

然后得到类似

0 1
2 3
4 5
6 7
8 9

但我得到了这个回溯:

Traceback (most recent call last):
  File "/home/andreas/.local/share/JetBrains/Toolbox/apps/PyCharm-P/ch-0/223.8214.51/plugins/python/helpers/pydev/pydevconsole.py", line 364, in runcode
    coro = func()
  File "<input>", line 1, in <module>
TypeError: cannot unpack non-iterable numpy.int64 object

我还尝试将np.nditer(x)itertoolszip(x[::2], x[1::2])一起使用,但这也不起作用,并显示不同的错误消息。
这应该是超级简单,但我不能找到解决方案在线。

deyfvvtc

deyfvvtc1#

你试图将0放入ij中,但这是不可能的。要达到这个结果,你必须使用x = x.reshape((5,2))x.shape = 5, 2来重塑numpy数组。然后你可以像这样解包它。
下面是您当前代码正在执行的操作:

i, j = 0
...
i, j = 1
...

如果你重新塑造它,就会发生这样的事情:

i, j = [0, 1]
...
i, j = [2, 3]
...

编辑:

import numpy as np
N = 10

x = np.arange(N).reshape((N/2, 2))
for i, j in x:
     print(i,j)
kzmpq1sx

kzmpq1sx2#

尝试忠实于最初的尝试。zip ping偶数和奇数对的元组:

import numpy as np
x = np.arange(10)

for i, j in zip(x[::2], x[1::2]):
     print(i,j)
mlmc2os5

mlmc2os53#

这是你想要的吗?

for x in range(0,10,2):
    print(x, x+1)

或者你的值保存在numpy数组x中,那么

for i in range(0, len(x), 2):
    print(x[i],x[i+1])

相关问题