我有兩個陣列,例如a = np.array([[0, 2, 0], [0, 2, 0]])和b = np.array([1, 1, 2])。我想要做的是創建一個與 a 相同大小的新陣列,但其中每個條目 (i,j) 對應于串列 b 的值,其索引由a[i][j]. 正式地說,我想要new_list[i][j] = b[a[i][j]].
我知道這可以通過 for 回圈來實作,如下面的代碼所示。但是,我想問一下這是否可以在沒有 for 回圈的情況下完成,而只能使用使用代碼矢量化的 Numpy 或 Python 內置函式。
a = np.array([[0, 2, 0], [0, 2, 0]])
b = np.array([0, 0, 2])
new_array = np.empty((2,3))
for i in range(len(a)):
for j in range(3):
new_array[i][j] = b[a[i][j]]
預期輸出:
array([[0, 2, 0],
[0, 2, 0]])
uj5u.com熱心網友回復:
您可以使用numpy.take:
np.take(b, a)
輸出:
array([[0, 2, 0],
[0, 2, 0]])
無歧義的例子
a = [[0, 2, 0], [1, 1, 2]]
b = [6, 7, 8]
np.take(b, a)
# array([[6, 8, 6],
# [7, 7, 8]])
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/346631.html
上一篇:交換陣列的部分
