#将条件逻辑表达为数据运算 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()#集合的对称差,即存在于一个数组中但不同时存在于两个数组中的元素
Python基础知识
最新推荐文章于 2024-11-30 18:16:43 发布