计算 numy.ndarray 中大于某个值的元素个数

Counting number of elements greater than a certain value in a numy.ndarray

我想计算 numpy.ndarry 中大于某个值的元素数。我如何获得所需的结果?

例如:

[[0.25656927 0.31030828 0.23430803 0.25999823 0.20450112 0.19383106
  0.35779405 0.36355627 0.16837767 0.1933686  0.20630316 0.17804974
  0.06902786 0.26209944 0.21310201 0.12016498 0.14213449 0.16639964
  0.33461425 0.15897344 0.20293266 0.14630634 0.2509769  0.17211646
  0.3922994  0.14036047 0.12571093 0.25565785 0.18216616 0.0728473
  0.25328827 0.1476636  0.1873344  0.12253726 0.16082433 0.20678088
  0.33296013 0.03104548 0.14949016 0.05495472 0.1494042  0.32033417
  0.05361898 0.14325878 0.16196126 0.15796155 0.10990247 0.14499696]]

是数组,我希望元素数大于 0.19214945092486838。 这里的值为21。如何计算?

你可以简单地做:

import numpy

arr = numpy.asarray([0.25656927, 0.31030828, 0.23430803, 0.25999823, 0.20450112, 0.19383106, 0.35779405, 0.36355627, 0.16837767, 0.1933686,  0.20630316, 0.17804974, 0.06902786, 0.26209944, 0.21310201, 0.12016498, 0.14213449, 0.16639964, 0.33461425, 0.15897344, 0.20293266, 0.14630634, 0.2509769,  0.17211646, 0.3922994,  0.14036047, 0.12571093, 0.25565785, 0.18216616, 0.0728473, 0.25328827, 0.1476636,  0.1873344,  0.12253726, 0.16082433, 0.20678088, 0.33296013, 0.03104548, 0.14949016, 0.05495472, 0.1494042,  0.32033417, 0.05361898, 0.14325878, 0.16196126, 0.15796155, 0.10990247, 0.14499696])

print((arr > 0.19214945092486838).sum())

输出为:21

这是一种方法

my_array = ... the target array ...
result = sum(0.19214945092486838 < x for x in my_array)

ar[ar>0.19214945092486838] 将为您提供高于当前值的元素列表。可以取len得到长度

>>> import numpy as np
>>> ar = np.array([0.25656927,0.31030828,0.23430803,0.25999823,0.20450112,0.19383106,0.35779405,0.36355627,0.16837767,0.1933686,0.20630316,0.17804974    ,0.06902786,0.26209944,0.21310201,0.12016498,0.14213449,0.16639964,0.33461425,0.15897344,0.20293266,0.14630634,0.2509769,0.17211646    ,0.3922994,0.14036047,0.12571093,0.25565785,0.18216616,0.0728473,0.25328827,0.1476636,0.1873344,0.12253726,0.16082433,0.20678088    ,0.33296013,0.03104548,0.14949016,0.05495472,0.1494042,0.32033417,0.05361898,0.14325878,0.16196126,0.15796155,0.10990247,0.14499696])

>>> print(len(ar[ar>0.19214945092486838]))
>>> 21

你可以尝试使用 numpy:

Myarray= [ [ your array]]
Value_to_search=0.19214945092486838

Array_greater_than=Myarray>Value_to_search
Nb_Val_greater_than=Array_greater_than.sum()
print(Nb_Val_greater_than)

获取项目大于/小于的数组:

>>> import numpy as np
>>> data = np.arange(12)
>>> data > 5
array([False, False, False, False, False, False,  True,  True,  True,
        True,  True,  True])

然后你只需要找到数组的总和:

>>> (data > 5).sum()
6

现在用您的值替换 data,然后使用 (data > 0.19214945092486838)

下面的代码片段将实现您想要的:)

import numpy as np
arrayToCheck=np.array([0.25656927, 0.31030828, 0.23430803, 0.25999823, 0.20450112, 0.19383106,
  0.35779405, 0.36355627, 0.16837767, 0.1933686,  0.20630316, 0.17804974,
  0.06902786, 0.26209944, 0.21310201, 0.12016498, 0.14213449, 0.16639964,
  0.33461425, 0.15897344, 0.20293266, 0.14630634, 0.2509769,  0.17211646,
  0.3922994,  0.14036047, 0.12571093, 0.25565785, 0.18216616, 0.0728473,
  0.25328827, 0.1476636,  0.1873344,  0.12253726, 0.16082433, 0.20678088,
  0.33296013, 0.03104548, 0.14949016, 0.05495472, 0.1494042,  0.32033417,
  0.05361898, 0.14325878, 0.16196126, 0.15796155, 0.10990247, 0.14499696])
print ("The number of float numbers above your threshold is " + str(np.sum(a>0.19214945092486838)))

最干净的方式(恕我直言):

x > 1 会将您的数组 x 转换为布尔值,其中大于 1 的元素为 True。然后你可以通过 np.count_nonzero()

计算真值

因此,np.count_nonzero(x > 1)

arr=np.array([0.25656927,0.31030828,0.23430803,0.25999823,0.20450112,0.19383106,
  0.35779405, 0.36355627, 0.16837767, 0.1933686,  0.20630316, 0.17804974,
  0.06902786, 0.26209944, 0.21310201, 0.12016498, 0.14213449, 0.16639964,
  0.33461425, 0.15897344, 0.20293266, 0.14630634 ,0.2509769 , 0.17211646,
  0.3922994 , 0.14036047, 0.12571093, 0.25565785, 0.18216616, 0.0728473,
  0.25328827, 0.1476636 , 0.1873344 , 0.12253726, 0.16082433, 0.20678088,
  0.33296013, 0.03104548, 0.14949016, 0.05495472, 0.1494042 , 0.32033417,
  0.05361898, 0.14325878 ,0.16196126, 0.15796155, 0.10990247, 0.14499696])

计数:

arr[np.where(arr>0.19214945092486838)].shape[0]
    

您可以使用 len 来计算结果,如下例所示:

import numpy as np

matrix = np.array([[0.25656927,0.31030828,0.23430803,0.25999823,0.20450112,0.19383106,
  0.35779405, 0.36355627, 0.16837767, 0.1933686, 0.20630316, 0.17804974,
  0.06902786, 0.26209944, 0.21310201, 0.12016498, 0.14213449, 0.16639964,
  0.33461425, 0.15897344, 0.20293266, 0.14630634, 0.2509769,  0.17211646,
  0.3922994,  0.14036047, 0.12571093, 0.25565785, 0.18216616, 0.0728473,
  0.25328827, 0.1476636,  0.1873344,  0.12253726, 0.16082433, 0.20678088,
  0.33296013, 0.03104548, 0.14949016, 0.05495472, 0.1494042,  0.32033417,
  0.05361898, 0.14325878, 0.16196126, 0.15796155, 0.10990247, 0.14499696]])

n = len(matrix[matrix > 0.18])
print(n)