过滤列表的问题

2024-06-24 00:19:37 发布

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

我使用numpy.genfromtxt从文件中读取了一个数组。根据这一点,我计算了一个名为renditen的列表

renditen = array_column1 - array_column2

renditen.dtype给出float64,renditen如下所示: [ -1.15 -3. -5.95 ..., 13.8 15. 6.5 ] 我的问题是重新考虑以下代码行:

ew_trefferquote = len(renditen[renditen>0]) / len(renditen) 

我想得到肯定列表条目的百分比。 但是,只有在Spyder编辑器和 运行所选代码。当我在Spyder中运行整个脚本时,ew_trefferquote为零,尽管它不应该为零。代码行有什么问题吗?或者可能是Spyder的问题


Tags: 代码numpy列表len数组arraydtypespyder
2条回答

我认为应该是:

ew_trefferquote = len([x for x in renditen if x > 0]) / len(renditen) 

按照当前的方式,您正在尝试使用renditen > 0索引到renditen中

我认为现在发生的是一个整数除以另一个整数:

>>> renditen = np.array([-2,-1,0,10,20])
>>> renditen[renditen > 0]
array([10, 20])
>>> len(renditen[renditen > 0]) / len(renditen)
0

您可以通过确保分割浮点来避免这种情况:

>>> 1.0*len(renditen[renditen > 0]) / len(renditen)
0.4
>>> float(len(renditen[renditen > 0])) / len(renditen)
0.4

或者,您可以在程序开始时from __future__ import division

>>> from __future__ import division
>>> 2/3
0.6666666666666666

我无法解释为什么选中时会使用浮点除法,但我对Spyder一无所知

相关问题 更多 >

    热门问题