根据数组中的位置创建包含条目的数组

时间:2017-02-12 21:47:37

标签: python arrays

我正在尝试创建一个由整数填充的数组,给出一个在数组中位置的公式。

基本上我正在尝试制作一个m X n矩阵,其中数组的值由公式根据其mn值确定。

例如。

m = 4
n = 3

a^i,j (A sub i,j)其中a = i*j看起来像这样:

[0, 0, 0]
[0, 1, 2]
[0, 2, 4]
[0, 3, 6]

因此A(0,0)将为0*0 = 0

A(3, 2)将为3*2 = 6

3 个答案:

答案 0 :(得分:4)

列表理解可以在这里提供帮助:

>>> m = 4
>>> n = 3
>>> [[x * y for y in range(n)] for x in range(m) ]
[[0, 0, 0], [0, 1, 2], [0, 2, 4], [0, 3, 6]]

你也可以使用NumPy并利用广播:

>>> import numpy as np
>>> np.arange(m).reshape(m, 1) * np.arange(n)
array([[0, 0, 0],
       [0, 1, 2],
       [0, 2, 4],
       [0, 3, 6]])

答案 1 :(得分:1)

你可以使用fromfunction来将它包装在numpy.matrix中。

numpy.matrix(numpy.fromfunction(lambda x, y: x*y, (4,3), dtype=int))

传递你喜欢的任何形状,我选择(4,3)来匹配你的例子。

答案 2 :(得分:1)

使用indices中的numpy

即可轻松完成
import numpy as np

ind = np.indices((4, 3))

然后

ind[0] * ind[1]

为您提供所需的结果:

array([[0, 0, 0],
       [0, 1, 2],
       [0, 2, 4],
       [0, 3, 6]])