Ошибка повторения элементов матрицы

#python #arrays #matrix #multidimensional-array

Вопрос:

Я пытаюсь создать матрицу, которая считывает:

 [0,1,2]
[3,4,5]
[6,7,8]
 

Однако мои элементы продолжают повторяться. Как мне это исправить?

 import numpy as np

n = 3
X = np.empty(shape=[0, n])

for i in range(3):
    for j  in range(1,4):
        for k  in range(1,7):
            X = np.append(X, [[(3*i) , ((3*j)-2), ((3*k)-1)]], axis=0)

print(X)
 

Результаты:

 [[ 0.  1.  2.]
 [ 0.  1.  5.]
 [ 0.  1.  8.]
 [ 0.  1. 11.]
 [ 0.  1. 14.]
 [ 0.  1. 17.]
 [ 0.  4.  2.]
 [ 0.  4.  5.]
 
 

Ответ №1:

Я не совсем уверен, как, по-вашему, должен был работать ваш код. Вы добавляете строку X в каждом цикле, так что 3 * 3 * 7 раз, так что в итоге вы получите матрицу 54 х 3.

Я думаю, может быть, ты хотел сделать:

 for i in range(3):
  X = np.append(X, [[3*i , 3*i 1, 3*i 2]], axis=0)
 

Просто, чтобы вы знали, добавление массива обычно не рекомендуется (просто создайте список списка, а затем сделайте его массивом numpy).

Вы также могли бы сделать

 >> np.arange(9).reshape((3,3))
array([[0, 1, 2],
       [3, 4, 5],
       [6, 7, 8]])