我正在學習 numpy,我需要弄清楚如何從兩個定義的 numpy 陣列創建一個新的 numpy 陣列,其中新陣列實際上是一堆從陣列 1 的元素創建的子陣列被“映射”到陣列的元素2.
我的意思是,對于:
array1 = [6,8,9]
array2 = [1, 2, 3]
那么結果陣列需要等于:
[[6,1], [6,2], [6,3], [8,1], [8,2], [8,3], [9,1], [9,2], [9,3]]
我想知道如何使用特定于 numpy 的函式執行此操作(因此沒有用于單獨迭代陣列元素的“for”回圈)
uj5u.com熱心網友回復:
使用np.meshgrid:
import numpy as np
array1 = [6, 8, 9]
array2 = [1, 2, 3]
def mesh(values):
return np.array(np.meshgrid(*values)).T.reshape(-1, len(values))
res = mesh([array1, array2])
print(res)
輸出
[[6 1]
[6 2]
[6 3]
[8 1]
[8 2]
[8 3]
[9 1]
[9 2]
[9 3]]
uj5u.com熱心網友回復:
你可以itertools.product像下面這樣:
array1 = [6,8,9]
array2 = [1,2,3]
import itertools
lst = [array1] [array2]
res = list(map(list, (itertools.product(*lst))))
print(res)
或者你也可以用做np.meshgrid和np.c_象下面這樣:
import numpy as np
mesharr1 , mesharr2 = np.meshgrid(array1, array2)
res = np.c_[mesharr1.ravel(), mesharr2.ravel()]
print(res)
輸出:(兩個代碼)
[[6, 1], [6, 2], [6, 3], [8, 1], [8, 2], [8, 3], [9, 1], [9, 2], [9, 3]]
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/342709.html
