假设我们有另一个numpy数组的索引数组:
我们可以直接使用数组
import numpy as np
a = np.array([0, 3, 1])
b = np.array([0, 10, 20, 30, 40, 50, 60, 70])
我们可以直接使用数组
a
作为索引:b[a] # np.array([0, 30, 10])
但是如果数组a有多个维度怎么办?例如,
a = np.array([[0, 2], [1, 3], [2, 4]])
# I want to get b[a] = np.array([[0, 20], [10, 30], [20, 40]])
如果数组a的维度大于1,则Numpy索引无法工作。我们可以通过使用map
来实现所需的结果。
map(lambda x: b[x], a)
然而,它的速度相当慢。对于一维情况,直接索引比使用map
快10-100倍。
有没有更快的方法?
b[a]
会发生什么? - hpaulja
是2D,b[a]
也会按预期工作。你遇到了什么错误? - jakevdp