从具有特定轴位置的列表创建数组(numpy)



这可能是一个简单的问题,但我是python初学者,需要一些帮助。我想使用numpy将列表转换为2d数组。还有两个其他列表描述了值的轴位置。f.e.:

list1=[1,2,3] #list with values
list2=[0,1,2] #position x-axis
list3=[2,1,0] #position y-axis

输出应该是这样的:

[[0 0 3]
[0 2 0]
[1 0 0]]

我尝试创建一个空数组并更改值,但只能手动执行,这是不实际的。有人能向我解释一下如何最好地进行这项工作吗?谢谢

import numpy as np
list1=[1,2,3] #list with values
list2=[0,1,2] #position x-axis
list3=[2,1,0] #position y-axis
output=np.zeros((len(list3),len(list2))) # matrix filled with zeros 3x3
# x and y are reversed in indexing
output[list3,list2]=list1

这里有一种方法:

arr = np.zeros((len(list3),len(list2))) #create array with zeros
arr[list3,list2]=list1

输出:

[[0. 0. 3.]
[0. 2. 0.]
[1. 0. 0.]]