因此,我有两个相当大的列表(两个列表中都有3636586个值),我尝试使用np.where()来查找使用这两个列表满足两个条件的值的数量。这些名单是
cat1 = [ 0.01027171 0.01691939 0.01614619 ..., 10.18688393 10.21286678
10.20675182]
cat2 = [ 4.81194684e-09 5.13640614e-08 5.48405854e-09 ..., 2.95787549e-06
3.43822015e-09 2.17239404e-09]
然后我使用np.其中():
summ = np.array([])
summ = np.append(summ, np.where((cat1 > 6.) & (cat2*1000 > .83)))
print(summ)
>>>[ 3615964. 3616643. 3616732. 3617188. 3618296. 3618976. 3619040.
3619205. 3619429. 3620039. 3620142. 3620185. 3620487. 3620810.
3621045. 3621375. 3621396. 3621828. 3622030. 3622326. 3622713.
3622999. 3623137. 3623202. 3624357. 3624919. 3625077. 3626185.
3626558. 3626666. 3627142. 3627279. 3627660. 3628004. 3628558.
3629997. 3630053. 3630128. 3630801. 3631271. 3631567. 3632210.
3632269. 3632285. 3632589. 3633107. 3633816. 3634833. 3635190.
3635307. 3635608. 3635711. 3635767. 3636159. 3636227.]
因此,我知道这些是满足条件的值的索引,我可以调用len(Sum)来找到总金额,即55。然而,我的问题是,我想稍后在循环中使用它(这就是为什么在开头有np.append()胡说八道,我只是过早地把它放进去了),而查找len(Sum)只给出了所有循环的索引总数。有没有什么办法我可以从每个循环中找到索引的总量?如果我尝试查找np.where()列表的长度,得到的结果如下:
summ = np.array([])
summ = np.append(summ, len(np.where((cat1 > 6.) & (cat2*1000 > .83))))
print(summ)
>>>[ 1.]
我想让它输出55。这样,当我把它放在循环中时,它将输出满足条件的索引计数,而不是不分隔开地输出索引本身。我希望它看起来像这样:
sample_array = [.39, .29, .12, ...] #array of some length
summ = np.array([])
for i in sample_array:
summ = np.append(summ, len(np.where((cat1 > 6.) & (cat2*1000 > i)))) #len() currently doesn't work like how I want it to
print(summ)
>>> [55, 23, 45, ...] #array of the count of indices for each loop that satisfy the conditions
当我这样运行它时,我得到了一个1的列表的输出,就像上面的行为一样。我试过SUM(np.where(...))但这只是输出指数,就像我刚开始打印总和时一样。
1条答案
按热度按时间yqlxgs2m1#
我想您无法通过使用np.来获得它,其中,如果您希望索引的长度满足您的条件,更好的方法是使用布尔条件,然后对其使用‘np.count_non零’。
例如,您可以做的是:
Np.count_non Zero((cat1>6.)&(cat2*1000>.83)),以获取满足条件的索引长度。希望这能帮上忙!