Python:如何使用函数通过理解来定义2D数组?

时间:2012-10-14 14:06:29

标签: python

我想定义一个2D(numpy)数组,使 单元格(row,col)== row + col (或这两个变量的任何其他函数:行和列)

我正在寻找一个功能性解决方案,我希望不会使用任何内存,并且生成的构造可以传递给任何标准数组操作函数(矩阵多...)

使用模板元编程在C ++中可行的东西。

1 个答案:

答案 0 :(得分:4)

使用numpy.fromfunction(function, shape)。来自docs

  

通过在每个坐标上执行函数来构造数组。

     

因此,得到的数组在坐标处具有值fn(x,y,z)   (x,y,z)。

所以,对于你的情况:

>>> import numpy as np
>>> arr = np.fromfunction(lambda i,j: i+j, (6,6))
>>> print arr
[[  0.   1.   2.   3.   4.   5.]
 [  1.   2.   3.   4.   5.   6.]
 [  2.   3.   4.   5.   6.   7.]
 [  3.   4.   5.   6.   7.   8.]
 [  4.   5.   6.   7.   8.   9.]
 [  5.   6.   7.   8.   9.  10.]]

(当然,这确实使用了内存 - 没有办法让一个函数像一个numpy数组,但实际上并不在内存中。但是,对于一个类似的情况,请参阅{ {1}} numpy类,它将存储在磁盘上的文件作为numpy数组访问 - docs here。)