我在列表中有一些数字,我想用numpy.Heres我的代码
组织lst=['99.56','99.76','99.84','100.00','100.00','100.00','100.00','100.00','100.00','99.80','99.43']
lst2=[]
for i in np.arange(95.0,100.0,0.1):
x=0
for j in lst:
if float(i)+0.1>= float(j) > float(i):
x=x+1
lst2.append(x)
lst2=[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0]
我不明白为什么最后一项是0.有6'100.00'。怎么来不是6?。
由于
答案 0 :(得分:2)
ndarray
生成的numpy.arange
通常不包含结束值:
In [15]: np.arange(99.0, 100., 0.1)
Out[15]: array([ 99. , 99.1, 99.2, 99.3, 99.4, 99.5, 99.6, 99.7, 99.8, 99.9])
请注意,有一个内置方法numpy.histogram
可以为您执行此操作;
In [13]: np.histogram(lst, list(np.arange(95.0,100.2,0.1)))
Out[13]:
(array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1,
0, 1, 2, 0, 6, 0]), array([ 95. , 95.1, 95.2, 95.3, 95.4, 95.5, 95.6, 95.7,
95.8, 95.9, 96. , 96.1, 96.2, 96.3, 96.4, 96.5,
96.6, 96.7, 96.8, 96.9, 97. , 97.1, 97.2, 97.3,
97.4, 97.5, 97.6, 97.7, 97.8, 97.9, 98. , 98.1,
98.2, 98.3, 98.4, 98.5, 98.6, 98.7, 98.8, 98.9,
99. , 99.1, 99.2, 99.3, 99.4, 99.5, 99.6, 99.7,
99.8, 99.9, 100. , 100.1, 100.2]))
答案 1 :(得分:0)
不太确定您在询问的内容...是否要根据lst
对lst2
进行排序,或制作新列表lst
?澄清你的问题将有助于获得更好的答案。
如果你想要做第一个,为什么不使用数组呢?
testarray = np.array(lst)
testarray.sort() # This will sort from largest to smallest.
关于为什么lst2
中的最后一个条目为0的问题,请查看您的逻辑。您询问i+0.1
的值是否大于j
和i
。对于最后一个条目,您将拥有:
i + 1 = 100.0
j = 99.43
i = 99.9
i+0.1
大于或等于j
,但j
不大于i
。计算结果为false,因此x的值保持为0。