【发布时间】:2021-12-17 23:48:33
【问题描述】:
我有两个数组,例如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]])
【问题讨论】:
-
在 python 中,
list和array(numpy.ndarray的缩写)是不同的类。我更喜欢主题行和变量名并没有混淆两者。在您的代码中,a和b是列表,new_list是一个数组。可以使用new_list[i,j]对其进行索引。
标签: python arrays numpy knn array-broadcasting