numpy的nonzero()和logical_and/or/not() 方差、标准差和协方差三者之间

一、numpy的nonzero()和logical_and/or/not()
np.nonzero(参数):
no.nonzero()函数是numpy中用于得到数组array中非零元素的位置(数组索引)的函数,很适合用来对数据下标的提取。着重需要强调的是nonzero函数中不仅可以放数值矩阵/行列,同样可以放布尔型(True、False)矩阵/行列,由于这个特性其适用范围更加的广泛和优秀,下面做一个简单的介绍和数据的实践。
只有df中非零元素才会有索引值,那些零值元素没有索引值;
返回的索引数值是一个二维的tuple数组,tuple中包含一维的array数组。每个array数组都是对一维数据判断的描述;
索引值数组的每一个array均是从一个维度上来描述其索引值。比如,如果df是一个二维数组,则索引值数组有两个array,第一个array从行维度来描述索引值;第二个array从列维度来描述索引值;
该np.transpose(np.nonzero(df)) 函数能够描述出每一个非零元素在不同维度的索引值;
通过df[nonzero(df)]得到所有a中的非零值;
nonzero函数中可以适用布尔型矩阵,等同于对0、1矩阵的判断(这个布尔值可以是我们对矩阵的判断条件)。
代码(大多适用的情况):

# 所有数据皆从0开始索引
 
import numpy as np
df = np.array([[1,0,1],[2,2,0,],[0,3,2]])
print(df)
# 原始矩阵
# [[1 0 1]
#  [2 2 0]
#  [0 3 2]]
 
# 返回每个非0元素坐标的tuple数组(包含行、列描述信息)
result = np.nonzero(df)
print(result)
print(result[0],result[1])	# 行描述、列描述
 
# (array([0, 0, 1, 1, 2, 2], dtype=int64), array([0, 2, 0, 1, 1, 2], dtype=int64))
# [0 0 1 1 2 2] [0 2 0 1 1 2]
 
# 返回每个非0元素坐标
result = np.transpose(np.nonzero(df))
print(result)
 
# [[0 0]
#  [0 2]
#  [1 0]
#  [1 1]
#  [2 1]
#  [2 2]]
 
# 返回所有非0值
result = df[np.nonzero(df)]
print(result)
 
# [1 1 2 2 3 2]
 
# 对矩阵第二列判断
result = np.nonzero(df[:,1])
print(result)
 
# (array([1, 2], dtype=int64),)		# 由于数据为1列,所以tuple返回一个array数组
 
# 布尔值判断
# 判断矩阵第三列中大于1值值的行号
result = np.nonzero(df[:,2]>1)
print(df[:,2]>1)
print(result)
 
# [False False  True]
# (array([2], dtype=int64),)

结合判断条件nonzero在矩阵中有着很大的操作空间(节约大量时间和代码量)。
logical_and/or/not(参数):
逻辑(与或非)运算,三者的调用方式:np.logical_and(x1, x2, *args, **kwargs) 非not没有x2参数
这里值得提醒一下的是,该方法可以结合上面的nonzero函数一同使用,做一个结合判断取值的方法。
与或非的使用自行学习,或者参考下面的代码输出来判断。我们依旧使用上面的数据矩阵来说明问题:

# 所有数据皆从0开始索引
 
import numpy as np
df = np.array([[1,0,1],[2,2,0,],[0,3,2
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值