如何使用字典替换列表内部列表中的项目?
这很好用
import numpy as np
ss_dict = {
1 : np.array([1,0,0,0,0,0]),
2 : np.array([0,1,0,0,0,0]),
3 : np.array([0,0,1,0,0,0]),
4 : np.array([0,0,0,1,0,0]),
5 : np.array([0,0,0,0,1,0]),
6 : np.array([0,0,0,0,0,1]),
}
l=np.array([1,2,3])
l = np.array([ss_dict[i] for i in l])
print(l)
输出:
[[1 0 0 0 0 0]
[0 1 0 0 0 0]
[0 0 1 0 0 0]]
但这会导致错误TypeError: unhashable type: 'numpy.ndarray'
l=np.array([[1,2,3],[4,5,6]])
l = np.array([ss_dict[i] for i in (j for j in l)])
print(l)
我想输出:
[
[[1 0 0 0 0 0]
[0 1 0 0 0 0]
[0 0 1 0 0 0]]
[[0 0 0 1 0 0]
[0 0 0 0 1 0]
[0 0 0 0 0 1]]
]
答案 0 :(得分:1)
这应该有所帮助。您只需要在列表解析中创建列表理解。
res = np.array([[ss_dict[j] for j in i] for i in l])
结果:
[[[1 0 0 0 0 0]
[0 1 0 0 0 0]
[0 0 1 0 0 0]]
[[0 0 0 1 0 0]
[0 0 0 0 1 0]
[0 0 0 0 0 1]]]