2
我有以下數組。 a和b之間使用select方法在numpy數組中選擇軸
In [1]: a = np.array([["aa", "bb", "cc"], ["cc", "bb", "aa"]])
In [2]: a
Out[2]:
array([['aa', 'bb', 'cc'],
['cc', 'bb', 'aa']],
dtype='|S2')
In [3]: b = np.array([[11, 12, 13], [21, 22, 23]])
In [4]: b
Out[4]:
array([[11, 12, 13],
[21, 22, 23]])
關係可以在 'A' 在概念上被描述爲B [0] .aa = 11個B [0]的.bb = 12 B [0] = .CC 13即行'b'中的鍵和行是單個字典的值。第一行將代表
{'aa': 11, 'bb': 12, 'cc': 13}
現在我們給出這些字符的鍵。
In [5]: c = np.array(["bb", "aa"])
In [6]: c
Out[6]:
array(['bb', 'aa'],
dtype='|S2')
現在,訪問b數組給定'c'的最佳方式是將每行的軸作爲'a'中的值。一種方法是
In [7]: cond_list = [a[:, 0] == c, a[:, 1] == c, a[:, 2] == c]
In [8]: choice_list = [b[:, 0], b[:, 1], b[:, 2]]
In [9]: np.select(cond_list, choice_list)
Out[9]: array([12, 23])
有沒有更好的方法呢?如果a和b中的軸的數量在手之前是未知的,該怎麼辦?
感謝您的酷招。 – pvncad