我有两个 numpy 数组 A 和 B。
A = np.array ([[ 1 3] [ 2 3] [ 2 1] ])
B = np.array([(1, 'Alpha'), (2, 'Beta'), (3, 'Gamma')]
Run Code Online (Sandbox Code Playgroud)
我如何将 A 与 B 映射以获得类似的结果:
result = np.array ([[ 'Alpha' 'Gamma'] [ 'Beta' 'Gamma'] ['Beta' 'Alpha'] ])
Run Code Online (Sandbox Code Playgroud)
我试过了,map(B['f1'],A)但我越来越TypeError: 'numpy.ndarray' object is not callable
这是一种NumPythonic矢量化方法 -
B[:,1][(A == B[:,0].astype(int)[:,None,None]).argmax(0)]
Run Code Online (Sandbox Code Playgroud)
在一般情况下运行示例 -
In [118]: A
Out[118]:
array([[4, 3],
[2, 3],
[2, 4]])
In [119]: B
Out[119]:
array([['3', 'Alpha'],
['4', 'Beta'],
['2', 'Gamma']],
dtype='|S5')
In [120]: B[:,1][(A == B[:,0].astype(int)[:,None,None]).argmax(0)]
Out[120]:
array([['Beta', 'Alpha'],
['Gamma', 'Alpha'],
['Gamma', 'Beta']],
dtype='|S5')
Run Code Online (Sandbox Code Playgroud)