我试图在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)
答案 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
zmin
和zmax
仍为浮点(十进制)数字。
答案 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