映射两个 numpy 数组

ulr*_*ich 5 python numpy

我有两个 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

Div*_*kar 2

这是一种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)