用numpy制作一个包含每个单元格的索引乘法的数组,不需要循环。

问题描述 投票:0回答:1

我想做一个函数,得到一个叫 "n "的int(比如4),然后用它做一个numpy数组,每个单元格都包含它的索引乘法,我想让它没有任何循环,比如,对于一个4的int,我想用np.arrange,np.reshape,np.tile等命令来做。

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这些命令来做,但是我卡住了,非常感谢。

numpy multidimensional-array indexing numpy-ndarray
1个回答
0
投票

使用 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]])

0
投票

你可以使用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]]
© www.soinside.com 2019 - 2024. All rights reserved.