我有三個 numpy 陣列:
Arr1 = [9,7,3,1] (1 x 4 array)
Arr2 = [[14,6],[13,2]] (2 x 2 array)
Arr3 = [0,2] (1 x 2 array)
我需要用 Arr2 中的元素替換 Arr1 中的元素,并使用 Arr3 中給出的相應索引,這樣輸出將是:
Output_Arr = [[14,6],[7],[13,2],[1]]
我寫了一些我認為是一個好的開始的代碼,但它不起作用。沒有錯誤或任何東西,只是 Arr1 沒有更新,就好像不滿足條件一樣:
dim1 = len(Arr1)
dim2 = len(Arr2)
dim3 = len(Arr3)
for i in range(dim1):
for j in range(dim3):
if i==Arr3[j]:
Arr1[i] = Arr2[j]
else:
Arr1[i] = Arr1[i]
有沒有人對如何解決這個問題有任何想法?
uj5u.com熱心網友回復:
您可以使用串列理解來完成它,這將為您節省一些代碼行并使其更具可解釋性,盡管它不會改善運行時,因為它在幕后使用回圈。另請注意,通過合并不同長度的串列,您將失去NumPy庫的任何運行時改進,因此它被強制轉換為dtype=object
Arr1 = np.array([9,7,3,1], dtype=object)
Arr2 = np.array([[14,6], [1], [13,2]], dtype=object)
Arr3 = np.array([0,2])
result = np.array([[Arr1[i]] if not np.sum(Arr3 == i) else Arr2[i] for i in np.arange(Arr1.size)], dtype=object)
result
OUTPUT: array([list([14, 6]), list([7]), list([13, 2]), list([1])], dtype=object)
干杯
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/364879.html
下一篇:如何拆分多維陣列的字串
