我的numpy数组总是以零结尾?

use*_*752 1 python math numpy

我想我错过了某个地方.我使用两个for循环(x和y)和一个基于x,y位置的函数填充了一个numpy数组.唯一的问题是,无论数组的大小如何,数组的值总是以零结尾.

thetamap = numpy.zeros(36, dtype=float)
thetamap.shape = (6, 6)
for y in range(0,5):
    for x in range(0,5):
        thetamap[x][y] =  x+y
print thetamap
Run Code Online (Sandbox Code Playgroud)

nne*_*neo 8

range(0, 5)生产0, 1, 2, 3, 4.始终省略端点.你想要的只是range(6).

更好的是,使用NumPy强大功能将阵列放在一行:

thetamap = np.arange(6) + np.arange(6)[:,None]
Run Code Online (Sandbox Code Playgroud)

这使得行向量和列向量,然后使用NumPy广播将它们加在一起以形成矩阵.

  • 或者,如果你真的想用numpy方法疯狂,它也相当于`np.add.outer(range(6),range(6))`.但是,广播更普遍适用. (4认同)
  • `总和(np.mgrid [:6,:6])`? (3认同)