有一個numpy陣列K和一個字典D,想通過字典D中的keys:values關系對陣列K進行一個映射,生成一個大小和K一樣的陣列,其值域為字典D中的values,想到用numpy的vectorize方法進行矢量運算,當字典的values為非串列list時使用沒問題,但為list是卻報錯,提示:setting an array element with a sequence. 更奇怪的是,如果K中首個資料不是字典的keys,則又不報錯,想請各位解答一下。
以下代碼報錯:ValueError: setting an array element with a sequence.
期望獲得[list([3, 4]) list([1, 2])]
import numpy as np
D = {'A': [1, 2], 'B': [3, 4]}
K = np.array(['B', 'A'])
V = np.vectorize(D.get)(K)
print(V)
以下代碼正常,僅僅將陣列K中第一個資料換成非keys
import numpy as np
D = {'A': [1, 2], 'B': [3, 4]}
K = np.array(['C', 'A'])
V = np.vectorize(D.get)(K)
print(V)
uj5u.com熱心網友回復:
雖然沒弄懂vectorize的問題,不過映射的話可以用map吧
V = list(map(D.get, K))
print(V)
uj5u.com熱心網友回復:
當K為1維時,用map可以,但K為二維時就不行,提示TypeError: unhashable type: 'numpy.ndarray',當然用np.flatten()將K轉成1維,然后再reshape可以實作。我主要是想用np.vectorize(),更簡潔一些,但出現了標題所示的錯誤
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/123807.html
