我想做一个函数,得到一个叫 "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这些命令来做,但是我卡住了,非常感谢。
使用 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]])
你可以使用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]]