Сделайте с помощью numpy массив, содержащий каждую ячейку, умножение индекса без циклов - PullRequest
1 голос
/ 16 июня 2020

Я хочу создать функцию, которая получает int с именем «n» (например, 4) и создает из него массив numpy, каждая ячейка которого содержит умножение индекса. Хочу сделать без петель. Например, для целого числа 4:

index_check(4)
[[0, 0, 0, 0],
[0, 1, 2, 3],
[0, 2, 4, 6],
[0, 3, 6, 9]]

я пытался использовать команды np.arrange, np.reshape, np.tile, но я застрял. большое спасибо

Ответы [ 2 ]

0 голосов
/ 16 июня 2020

Вы можете использовать встроенную функцию в numpy, которая предоставляет вам индексы и умножает индекс строки на индекс столбца, используя np.multiply следующим образом:

np.multiply(*np.indices((4,4)))

вывод:

[[0 0 0 0]
 [0 1 2 3]
 [0 2 4 6]
 [0 3 6 9]]
0 голосов
/ 16 июня 2020

Используйте np.multiply.outer в диапазоне-массиве -

In [41]: n = 4

In [42]: np.multiply.outer(np.arange(n), np.arange(n))
Out[42]: 
array([[0, 0, 0, 0],
       [0, 1, 2, 3],
       [0, 2, 4, 6],
       [0, 3, 6, 9]])

Более короткий с распаковкой и range вместо -

In [44]: np.multiply.outer(*[range(n)]*2)
Out[44]: 
array([[0, 0, 0, 0],
       [0, 1, 2, 3],
       [0, 2, 4, 6],
       [0, 3, 6, 9]])
...