一个通用的解决方案是使用np.fromfunction()
从文档中:
numpy.fromfunction(function, shape, **kwargs)通过在每个坐标上执行一个函数来构造一个数组。因此,所得数组在坐标(x,y,z)处具有值fn(x,y,z)。
下一行应提供所需的矩阵。
numpy.fromfunction(lambda i, j: i*j, (5,5))
输出:
array([[ 0., 0., 0., 0., 0.], [ 0., 1., 2., 3., 4.], [ 0., 2., 4., 6., 8.], [ 0., 3., 6., 9., 12.], [ 0., 4., 8., 12., 16.]])
该函数的第一个参数是可调用的,可为每个坐标执行。如果
foo是作为第一个参数传递的函数,
foo(i,j)则将是的值
(i,j)。这也适用于更高的尺寸。可以使用
shape参数修改坐标数组的形状。



