2

我想定义一个二维(numpy)数组,这样cell(row,col) == row+col(或这两个变量的任何其他函数:行和列)

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

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

4

1 回答 1

4

使用numpy.fromfunction(function, shape). 从文档

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

因此,结果数组在坐标 (x, y, z) 处具有值 fn(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 数组但实际上并不在内存中。但是,对于有点类似的情况,请参阅memmapnumpy 类,它访问作为 numpy 数组存储在磁盘上的文件—— 此处为文档。)

于 2012-10-14T14:14:14.827 回答