将x、y值添加到numpy矩阵

将x、y值添加到numpy矩阵,numpy,matrix,Numpy,Matrix,所以,我有一个数据文件,格式为 1 , 1 , 2 2 , 5 , 8 3 , 9 , 10 ... ... 在我的例子中,每个三元组的形式是:value,x位置,y位置 我想要实现的是在2d矩阵中插入这些数据,我已经使用np.zeros函数创建了2d矩阵。但是,我被卡住了,不知道如何编写一个函数,将给定的值放在矩阵中正确的x和y位置:/ 我的当前矩阵(命名矩阵)如下所示: array([[0,0,0,...,0] [0,0,0,...,0] [...

所以,我有一个数据文件,格式为

1 , 1 , 2
2 , 5 , 8
3 , 9 , 10
...
...
在我的例子中,每个三元组的形式是:value,x位置,y位置

我想要实现的是在2d矩阵中插入这些数据,我已经使用np.zeros函数创建了2d矩阵。但是,我被卡住了,不知道如何编写一个函数,将给定的值放在矩阵中正确的x和y位置:/

我的当前矩阵(命名矩阵)如下所示:

array([[0,0,0,...,0]
       [0,0,0,...,0]
       [...        ]
       [0,0,0,...,0]])
如果我使用矩阵[1,1]=2(第一行数据),我会得到:

array([[0,0,0,...,0]
       [0,2,0,...,0]
       [...        ]
       [0,0,0,...,0]])
我的目标是以这种方式插入所有数据行。

您可以使用where-You-set-as
delimiter=…
参数,逗号(
,“
)。因此,如果您创建了一个文件
data.txt
,则可以使用以下命令将该文件加载到numpy数组中:

>>> import numpy as np
>>> np.genfromtxt('data.txt', delimiter=',')
array([[ 1.,  1.,  2.],
       [ 2.,  5.,  8.],
       [ 3.,  9., 10.]])
或者,如果您只对x/y值感兴趣,可以使用
usecols=…
参数:

>>> np.genfromtxt('data.txt', delimiter=',', usecols=(1,2))
array([[ 1.,  2.],
       [ 5.,  8.],
       [ 9., 10.]])

您可以使用
genfromtxt()
加载数据:

然后从
tmp

a = np.zeros(np.max(tmp[:, :2], axis=0) + 1)
a[tmp[:, 0], tmp[:, 1]] = tmp[:, 2]
a
# array([[ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
#        [ 0.,  2.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
#        [ 0.,  0.,  0.,  0.,  0.,  8.,  0.,  0.,  0.,  0.],
#        [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0., 10.]])
并用
tmp

a = np.zeros(np.max(tmp[:, :2], axis=0) + 1)
a[tmp[:, 0], tmp[:, 1]] = tmp[:, 2]
a
# array([[ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
#        [ 0.,  2.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
#        [ 0.,  0.,  0.,  0.,  0.,  8.,  0.,  0.,  0.,  0.],
#        [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0., 10.]])

哦,我想我的问题不够具体,所以我会更新它。像这样的矩阵不是我的目标。尽管如此,还是要谢谢你!我不完全明白为什么第一行第三列位于
1,1
?你能说明输入值应该如何映射到矩阵的坐标上吗?