在numpy中组织数字

时间:2014-04-21 16:42:01

标签: python numpy

我在列表中有一些数字,我想用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?。

由于

2 个答案:

答案 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)

不太确定您在询问的内容...是否要根据lstlst2进行排序,或制作新列表lst?澄清你的问题将有助于获得更好的答案。

如果你想要做第一个,为什么不使用数组呢?

testarray = np.array(lst)
testarray.sort() # This will sort from largest to smallest.

关于为什么lst2中的最后一个条目为0的问题,请查看您的逻辑。您询问i+0.1的值是否大于ji。对于最后一个条目,您将拥有:     i + 1 = 100.0     j = 99.43     i = 99.9

i+0.1大于或等于j,但j不大于i。计算结果为false,因此x的值保持为0。