Печать позиций MATRIX значений в матрице (Python)
У меня есть матрица с некоторыми значениями. Я хочу получить 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 ответа
В соответствии с моим пониманием используйте нижеприведенный код приложения (протестировано в 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)]]
Надеюсь, что это будет полностью заполнить ваше требование!
Если я правильно понял, вам нужно добавить следующий код после извлечения rows
а также cols
:
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)])
В противном случае вы можете оставить как выше и основать его на вашем списке источника / назначения.