我想定义一个2D(numpy)数组,使 单元格(row,col)== row + col (或这两个变量的任何其他函数:行和列)
我正在寻找一个功能性解决方案,我希望不会使用任何内存,并且生成的构造可以传递给任何标准数组操作函数(矩阵多...)
使用模板元编程在C ++中可行的东西。
答案 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。)