Python基础知识

本文主要介绍了使用NumPy将条件逻辑表达为数据运算。通过示例展示了np.where函数根据条件选择数组元素,还介绍了数组的均值、求和、累积和、累积积等运算,以及数组排序、元素判断和集合逻辑操作,如判断元素是否在数组中、计算交集、并集等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#将条件逻辑表达为数据运算
import numpy as np
import sys
xarr=np.array([1.1,1.2,1.3,1.4,1.5])
yarr=np.array([2.1,2.2,2.3,2.4,2.5])
cond=np.array([True,False,True,True,False])
result=[(x if c else y) for x,y,c in zip(xarr,yarr,cond)]
# print(result)
#[1.1, 2.2, 1.3, 1.4, 2.5]
result=np.where(cond,xarr,yarr)
# print(result)
#[1.1 2.2 1.3 1.4 2.5]
arr=np.random.randn(4,4)
# print(arr)
# [[ 0.81087732 -0.0261381  -1.25487167 -0.87705213]
#  [-1.04039547 -0.74374567 -1.0833896  -1.99172423]
#  [-0.35348778 -0.9124479   0.63235869 -1.89039235]
#  [ 0.5071046  -1.25036853 -0.86280827  3.24040794]]
arr1=np.where(arr>0,2,-2)
# # print(arr1)
# [[ 2 -2 -2 -2]
#  [-2 -2 -2 -2]
#  [-2 -2  2 -2]
#  [ 2 -2 -2  2]]
arr2=np.where(arr>0,2,arr)
# print(arr2)
# [[ 2.         -0.0261381  -1.25487167 -0.87705213]
#  [-1.04039547 -0.74374567 -1.0833896  -1.99172423]
#  [-0.35348778 -0.9124479   2.         -1.89039235]
#  [ 2.         -1.25036853 -0.86280827  2.        ]]
result=[]
cond1=np.array([1,2,0,0])
cond2=np.array([0,3,0,5])
for i in range(cond1.shape[0]):
    if cond1[i] and cond2[i]:
        result.append(0)
    elif cond1[i]:
        result.append(1)
    elif cond2[i]:
        result.append(2)
    else:
        result.append(3)
# print(result)
# [1, 0, 3, 2]
result=np.where(cond1 &cond2,0,np.where(cond1,1,np.where(cond2,2,3)))
# print(result)
# [1 0 3 2]
arr=np.random.randn(5,4)
# print(arr)
# print(arr.mean())
# print(arr.sum())
# print(arr.mean(axis=1))  #按行计算均值
# print(arr.sum(axis=0))#按行计算和
arr=np.array([[0,1,2],[3,4,5],[6,7,8]])
# print(arr)
# [[0 1 2]
#  [3 4 5]
#  [6 7 8]]
# print(arr.cumsum(0)) #按列计算和,有中间结果
# [[ 0  1  2]
#  [ 3  5  7]
#  [ 9 12 15]]
# print(arr.cumprod(1)) #按行计算机积,有中间结果
# [[  0   0   0]
#  [  3  12  60]
#  [  6  42 336]]
# print(arr.cumsum())  #计算总和,有中间结果
# [ 0  1  3  6 10 15 21 28 36]
arr=np.random.randn(100)
# print((arr>0).sum()) #统计arr中大于0的个数
bools=np.array([False,False,True,False])
# print(bools.any())
# print(bools.all())
# True
# False
######数组排序
arr=np.random.randn(8)
arr.sort()
arr=np.random.randn(5,3)
arr.sort(1) #按行排序
#判断一个数组元素是否在另一个数组里
values=np.array([6,0,0,3,2,5,6])
print(np.in1d(values,[2,3,6]))
#集合逻辑
#unique(x) #计算x中的唯一元素,并返回有序结果
np.insersect1d()#计算x和y的公共元素,并返回有序结果
np.union1d() #计算x和y的并集,并返回有序结果
np.in1d()#得到
np.setdiff1d()#集合的差,即元素在x中且不在y中
np.setxor1d()#集合的对称差,即存在于一个数组中但不同时存在于两个数组中的元素


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值