簡體   English   中英

如何迭代 numpy 數組,每個循環獲取兩個值?

[英]How to iterate over a numpy array, getting two values per loop?

我設想類似的東西

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])一起使用,但這也不起作用,並出現不同的錯誤消息。

這應該超級簡單,但我無法在網上找到解決方案。

您試圖將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)

這是你想要的嗎?

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])

試圖忠實於最初的嘗試。 zip ping 偶數和奇數對的元組:

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM