在for循环中使用python numpy linspace

2024-04-26 18:11:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在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) 

Tags: innumpyfordatalenbinrangenum
2条回答

更简单的方法是使用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

不应使用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仍然是浮点数(十进制)。

相关问题 更多 >