映射两个numpy数组

2024-05-08 03:12:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个纽比阵列A和B

A = np.array ([[ 1  3] [ 2  3]  [ 2  1] ])

B = np.array([(1, 'Alpha'), (2, 'Beta'), (3, 'Gamma')]

如何将A与B映射以获得类似于:

^{pr2}$

我试过map(B['f1'],A),但是我得到了TypeError: 'numpy.ndarray' object is not callable


Tags: alphanumpymapobjectisnpnotarray
3条回答

您可以使用字典和列表理解:

>>> d=dict(B)
>>> np.array([[(d[str(i)]),d[str(j)]] for i,j in A])
array([['Alpha', 'Gamma'],
       ['Beta', 'Gamma'],
       ['Beta', 'Alpha']], 
      dtype='|S5')

不使用任何具体的numpy事情你可以做:

d = dict(B)
[[d.get(str(y)) for y in x] for x in A]

这里有一个NumPythonic矢量化方法-

B[:,1][(A == B[:,0].astype(int)[:,None,None]).argmax(0)]

在一般情况下运行的示例-

^{pr2}$

相关问题 更多 >