Python - простой вопрос: матрица Numpy, петля - PullRequest
0 голосов
/ 22 ноября 2018

Я довольно новичок в python и пытаюсь разобраться в следующем коде:

import numpy as np
n=4
matrix=np.zeros((n,n))
for j in range (0,n):
    for i in range (n-1,n-j-2,-1):
        matrix[i,j]=2*n-i-j-1
print (matrix)

Я был бы очень признателен, если бы кто-нибудь мог помочь мне понять, как выполняется каждая строка и как кодПереоценено с помощью цикла.

Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 22 ноября 2018
import numpy as np
n=4

Мы начинаем с установки матрицы 4x4 со всеми координатами, равными нулю:

matrix=np.zeros((n,n))         

Мы устанавливаем новые значения координат путем циклического перемещения по строкам и столбцам.Сначала мы перебираем строки от индекса 0 до n-1:

for i in range (0,n): 

Далее мы перебираем столбцы.Теперь обратите внимание, что мы перебираем только те столбцы, чей индекс меньше или равен индексу текущей строки (т. Е. От 0 до i).Таким образом, мы гарантируем, что значения, которые мы устанавливаем, находятся на или ниже диагонали матрицы:

    for j in range(0,i+1):     

Наконец, мы устанавливаем желаемое значение для текущей координаты:

        matrix[i,j]=i-j+1
print(matrix)
0 голосов
/ 22 ноября 2018

Вы можете добавить следующий оператор печати, и цикл будет объясняться на каждой итерации:

n=4
matrix=np.zeros((n,n))
for i in range (0,n):
    for j in range(0,i+1):
        print(f'inserting {i-j+1} into the matrix at row index {i}, columns index {j}')
        matrix[i,j]=i-j+1

Когда вы запустите его, вы получите такой вывод:

inserting 1 into the matrix at row index 0, columns index 0
inserting 2 into the matrix at row index 1, columns index 0
inserting 1 into the matrix at row index 1, columns index 1
...
inserting 3 into the matrix at row index 3, columns index 1
inserting 2 into the matrix at row index 3, columns index 2
inserting 1 into the matrix at row index 3, columns index 3

ИВаша матрица заполнена как и раньше:

>>> matrix
array([[1., 0., 0., 0.],
       [2., 1., 0., 0.],
       [3., 2., 1., 0.],
       [4., 3., 2., 1.]])

Только для справки:

>>> matrix
array([[1., 0., 0., 0.],   #<- "row" index 0
       [2., 1., 0., 0.],   #<- "row" index 1
       [3., 2., 1., 0.],   #<- "row" index 2
       [4., 3., 2., 1.]])  #<- "row" index 3

      # ^      ...  ^
      # "col" 0     "col" 3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...