在矩阵中打印值的位置矩阵(Python)

时间:2018-09-23 02:11:19

标签: python matrix position m

我有一些值的矩阵。我想将每个值的m,n个位置放到一个单独的矩阵中。

import numpy as np

a = np.zeros((3,3)) #Creating "a" matrix with all zeros
vals = [22,34,43,56,37,45] # the values that i want to add to the matrix "a"
pos = [(0,1),(0,2),(1,0),(1,2),(2,0),(2,1)] # Corresponding positions of the above given values

rows, cols = zip(*pos)   # This code is to assign the given values in the correct position

a[rows, cols] = vals

print (a)

输出=

[[(0,0) (0,1) (0,2)]

[(1,0) (1,1) (1,2)]

[(2,0) (2,1) (2,2)]]

请帮帮我。

我想获取任何矩阵(m,n)的位置矩阵(m,n)

2 个答案:

答案 0 :(得分:0)

如果我理解正确,则需要在提取rowscols之后添加以下代码:

a = np.array([[(i, j) for j in range(max(cols)+1)] for i in range(max(rows)+1)])
print(a)

输出:

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

提取矩阵中有多少列和行,加1(因为默认情况下range在间隔的上限是打开的),然后用当前行和列的值填充它。如果您事先知道大小为o的矩阵,则可以像这样替换范围内的值:

a = np.array([[(i, j) for j in range(3)] for i in range(3)])

否则,您可以如上所述离开,并基于源/目的地列表。

答案 1 :(得分:0)

据我所知,使用以下应用程序代码(在python 3.6.2中进行了测试):

import numpy as np
matrixlist=[]
tuple1=()
list1=[]
list1=tuple(tuple1)
rows= 3
cols=3

a = np.zeros((rows*cols))
for i in range(rows):
    list1=[]
    list1.append(i)
    t1=tuple(list1)
    for j in range(cols):
        list1=list(t1)
        list1.append(j)
        t2=tuple(list1)
        matrixlist.append(t2)
        list1.remove(list1[0])
data=[]
data= matrixlist
i=0
m=[data[i:i+cols] for i in range(0, len(data), cols)]
print(m)

输出:

[[(0, 0), (0, 1), (0, 2)], [(1, 0), (1, 1), (1, 2)], [(2, 0), (2, 1), (2, 2)]]

希望这将完全满足您的要求!