Приведение вектора в матрицу в Python с использованием циклов for - PullRequest
0 голосов
/ 02 апреля 2020

У меня есть список длиной 50, созданный с использованием linspace:

m=np.linspace(0,10,50)

Я могу преобразовать это как матрицу 10 X 5, используя изменение формы

X=np.reshape(m,(10,5))

Но, если я хочу используйте for-loop, чтобы сделать то же самое, я получаю ошибку:

z=np.zeros((10,5),dtype=float)
s=0
for i in range(0,10):
    for j in range(0,5):
        m[i][j]=z[s]
        s=s+1

вот ошибка:

'numpy .float64' объект не поддерживает элемент назначение

Почему не поддерживается назначение элемента?

Спасибо

Ответы [ 2 ]

1 голос
/ 02 апреля 2020

z будет хранить ваши вещи из m после изменения формы:

m=np.linspace(0,10,50)

z=np.zeros((10,5),dtype=float)
for i in range(10):
    for j in range(5):
        z[i][j]=m[i * 5 + j]  # compute the index from m base on the current row and column


print(z)
0 голосов
/ 02 апреля 2020

Это была глупая ошибка:

да, я неправильно понял размеры; вот как я переписал это:

m=np.linspace(0,10,50)
z=np.zeros((10,5),dtype=float)
s=0
for i in range(0,10):
    for j in range(0,5):
        z[i][j]=m[s]
        s=s+1
...