Создание матрицы в Python с диапазоном чисел - PullRequest
0 голосов
/ 01 февраля 2020

Я хотел бы создать матрицу с ячейками, которые увеличиваются на 10. Например, выходные данные матрицы 3x3 должны быть:

[[10, 20, 30], [40, 50, 60], [70, 80, 90]]

Код, который у меня есть в данный момент, создает матрица 3х3, заполненная нулями:

print([[0 for x in range(3)] for y in range(3)])

output: [[0, 0, 0], [0, 0, 0], [0, 0, 0]]

Ответы [ 4 ]

1 голос
/ 01 февраля 2020

Попробуйте это для размера

print([[30*y + 10*x for x in range(3)] for y in range(3)])

То, что это делает, заменяет 0, который вы использовали с 30*y + 10*x, что именно то, что вам нужно для генерации массива. Для более общего решения, которое позволяет масштабировать до n на n матриц, вы можете использовать

n = k
print([[10*k*y + 10*x for x in range(k)] for y in range(k)])

Для разных строк и столбцов вы можете использовать

rows = k
cols = j
print([[10*cols*y + 10*x for x in range(cols)] for y in range(rows)])
0 голосов
/ 01 февраля 2020
import numpy as np
x = np.array(range(10,100,10)).reshape(3,3)
print(x)

[[10 20 30]
 [40 50 60]
 [70 80 90]]
0 голосов
/ 01 февраля 2020

numpy пакет достаточно гибок для вещей, которые вы хотите:

import numpy as np
m = np.arange(10, 100, 10) #array [10, 20, 30, 40, 50, 60, 70, 80, 90]
m = m.reshape(3,3) # array [[10, 20, 30], [40, 50, 60], [70, 80, 90]]
print(m.tolist()) # array converted to list if you need

Вывод:

[[10, 20, 30], [40, 50, 60], [70, 80, 90]]
0 голосов
/ 01 февраля 2020

Код не очень компактен, но он выполняет свою работу:

matrix = []
bar = []
foo = 10
  for i in range(3):
    for i in range(3):
  bar.append(foo)
  foo = foo + 10
matrix.append(bar)
bar = []
print(matrix)

Я не очень хорош с однострочными операторами. Приносим извинения за доставленные неудобства.

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