17_NumPy数组ndarray中计算满足条件的元素的个数

17_NumPy数组ndarray中计算满足条件的元素的个数

连同示例代码一起说明了一种计算满足NumPy数组ndarray条件的元素数量的方法。

将描述以下内容。

  • 全体ndarray中满足条件的元素数的计算
  • 计算ndarray的每一行和每一列满足条件的元素数
  • 使用numpy.any()(全体,行/列)检查是否有满足条件的元素
  • 使用numpy.all()检查所有元素是否都满足条件(全体,行/列)
  • 多种条件

要替换满足条件的元素,请参考以下文章。

全体ndarray中满足条件的元素数的计算

将ndarray与标量值进行比较将返回以布尔值(True,False)作为元素的ndarray。您可以将<,==,!=等进行比较。

import numpy as np

a = np.arange(12).reshape((3, 4))
print(a)
# [[ 0  1  2  3]
#  [ 4  5  6  7]
#  [ 8  9 10 11]]

print(a < 4)
# [[ True  True  True  True]
#  [False False False False]
#  [False False False False]]

print(a % 2 == 1)
# [[False  True False  True]
#  [False  True False  True]
#  [False  True False  True]]

使用np.count_nonzero()获得True的数量,即满足条件的元素的数量

print(np.count_nonzero(a < 4))
# 4

print(np.count_nonzero(a % 2 == 1))
# 6

True 被视为 1,False 被视为 0,因此您也可以使用 np.sum()。然而, np.count_nonzero() 更快。

print(np.sum(a < 4))
# 4

print(np.sum(a % 2 == 1))
# 6

计算ndarray的每一行和每一列满足条件的元素数

通过指定参数轴,为每个轴(每个维度)处理多维数组的Np.count_nonzero()。

在二维数组的情况下,将在参数axis= 0的列中进行处理,在axis= 1的行中进行处理。通过使用它,可以计算满足每一行和每一列条件的元素的数量。

print(np.count_nonzero(a < 4, axis=0))
# [1 1 1 1]

print(np.count_nonzero(a < 4, axis=1))
# [4 0 0]

print(np.count_nonzero(a % 2 == 1, axis=0))
# [0 3 0 3]

print(np.count_nonzero(a % 2 == 1, axis=1))
# [2 2 2]

自版本1.12.0起,可以使用np.count_nonzero()指定参数轴。由于np.sum()自1.7.0版以来已实现参数轴,因此可以将np.sum()用于较早的版本。

使用numpy.any()(全体,行/列)检查是否有满足条件的元素

np.any()是一个函数,如果在作为第一个参数传递的ndarray中至少有一个True元素,则返回True,否则返回False。

print(np.any(a < 4))
# True

print(np.any(a > 100))
# False

与np.count_nonzero()类似,如果指定了参数轴,则np.any()将处理每一行和每一列。

print(np.any(a < 4, axis=0))
# [ True  True  True  True]

print(np.any(a < 4, axis=1))
# [ True False False]

使用numpy.all()检查所有元素是否都满足条件(全体,行/列)

np.all()是一个函数,如果在第一个参数中传递的ndarray的所有元素均为True,则返回True,否则返回False。

print(np.all(a < 4))
# False

print(np.all(a < 100))
# True

与np.count_nonzero()相似,当指定参数轴时,将对每一行和每一列处理np.all()。

print(np.all(a < 4, axis=0))
# [False False False False]

print(np.all(a < 4, axis=1))
# [ True False False]

多种条件

如果要组合多个条件,请将每个条件表达式括在()中,并将其与&或|连接。

print((a < 4) | (a % 2 == 1))
# [[ True  True  True  True]
#  [False  True False  True]
#  [False  True False  True]]

print(np.count_nonzero((a < 4) | (a % 2 == 1)))
# 8

print(np.count_nonzero((a < 4) | (a % 2 == 1), axis=0))
# [1 3 1 3]

print(np.count_nonzero((a < 4) | (a % 2 == 1), axis=1))
# [4 2 2]

请注意,如果省略括号()或使用and和or,将发生错误。

  • 20
    点赞
  • 59
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值