在for循环中使用python numpy linspace

时间:2014-07-22 14:46:53

标签: python for-loop numpy

我试图在for循环中使用linspace。我希望0.5到0之间的间隔。看起来z_bin正在执行。

我的问题:如何在for循环中正确使用linspace代替注释行中显示的范围函数?当我从使用整数到使用小数时,我需要在循环中更改什么?

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) 

2 个答案:

答案 0 :(得分:4)

您不应该使用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

zminzmax仍为浮点(十进制)数字。

答案 1 :(得分:1)

更简单的方法是使用zip函数:

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

for z_min, z_max in zip(z_bin[:-1], z_bin[1:]):
    print z_min, z_max