在for循环中使用python numpy linspace

Cur*_*119 3 python for-loop numpy

我正在尝试在 for 循环中使用 linspace。我想要 0 到 10 之间的 0.5 间隔。看来 z_bin 正在正确执行。

我的问题:如何在 for 循环中正确使用 linspace 代替注释行中显示在它旁边的 range 函数?当我从使用整数转向使用小数时,我需要在循环中改变什么?

z_bin = numpy.linspace (0.0,10.0,num=21) 
print 'z_bin: ', z_bin
num = len(z_bin)

grb_binned_data = []
for i in numpy.linspace(len(z_bin)-1): #range(len(z_bin)-1):
    zmin = z_bin[i]
    zmax = z_bin[i+1]
    grb_z_bin_data = []
    for grb_row in grb_data:
        grb_name = grb_row[0]
        ra = grb_row[1]
        dec = grb_row[2]
        z = float(grb_row[3])
        if z > zmin and z <= zmax:
            grb_z_bin_data.append(grb_row)
    grb_binned_data.append(grb_z_bin_data) 
Run Code Online (Sandbox Code Playgroud)

dsh*_*erd 5

你不应该使用 linspace 的输出来索引一个数组!linspace 生成浮点数,数组索引需要一个整数。

从你的代码看起来你真正想要的是这样的:

z_bin = numpy.linspace(0.0, 10.0, 21)

for i in range(len(z_bin)-1):
    zmin = z_bin[i]
    zmax = z_bin[i+1]

    # do some things with zmin/zmax
Run Code Online (Sandbox Code Playgroud)

zmin并且zmax仍然是浮点(十进制)数。