2-ndarray 的运算
1:逻辑运算
import numpy as np # 重新生成8只股票10个交易日的涨跌幅数据 a = np.random.normal(0,1,(8,10)) a = a[0:5,0:5] a>0.5 array([[False, True, False, True, False], [ True, False, False, True, False], [False, False, False, False, False], [ True, False, False, False, False], [False, False, False, False, True]]) # BOOL赋值, 将满足条件的设置为指定的值-布尔索引 a[a>0.5] = 1 a array([[ 0.42239475, 1. , -0.96660481, 1. , -2.01321414], [ 1. , -0.25925804, -0.98642109, 1. , -0.0340934 ], [-1.31676248, -1.18798167, -0.06931818, 0.33404852, -0.5186317 ], [ 1. , -0.93588204, -0.75465725, -0.46047116, -0.26881438], [-0.6638155 , -0.92471488, -0.81871078, 0.05119344, 1. ]])
2:通用判断函数
- np.all()
# 判断a[0:2, 0:5]是否全时上涨 np.all(a[0:2,0:5]>0) False
- np.any()
# 判断a[0:2, 0:5]是否全时上涨 np.all(a[0:2,0:5]>0) True
3: np.where (三元运算符)
# 判断前四个股票前四天的涨跌幅 大于0的置为1,否则为0 np.where(a[0:4,0:4]>0,1,0) array([[0, 1, 1, 1, 1], [1, 0, 1, 1, 0], [1, 1, 0, 0, 1], [1, 1, 1, 0, 0], [1, 1, 1, 0, 1]]) # 判断前四个股票前四天的涨跌幅 大于0.5并且小于1的,换为1,否则为0 # 判断前四个股票前四天的涨跌幅 大于0.5或者小于-0.5的,换为1,否则为0 np.where(np.logical_and(temp > 0.5, temp < 1), 1, 0) np.where(np.logical_or(temp > 0.5, temp < -0.5), 1, 0) array([[0, 1, 1, 1, 1], [1, 0, 1, 1, 0], [1, 1, 0, 0, 1], [1, 1, 1, 0, 0], [1, 1, 1, 0, 1]])
4:统计运算
arr = np.array([5,2,3,6,7,1]) arr.sort() #数组的升序排序 print(arr) [1 2 3 5 6 7] arr2 = np.array([[8,3,1,2],[9,3,1,6]]) #纵向 arr2.sort(axis=0) print(arr2) [[8 3 1 2] [9 3 1 6]] #横向 arr2.sort(axis=1) print(arr2) [[1 2 3 8] [1 3 6 9]] #返回培训后的索引 print(arr2.argsort()) print(arr2.argsort()) [[0 1 2 3] [0 1 2 3]] [[0 1 2 3] [0 1 2 3]] #去重 name = np.array(['小明','小红','小强','小红']) print(np.unique(name)) ['小强' '小明' '小红'] #复重 tile 对数组进行复重 print(np.tile(arr2,2))#把数组2 重复两次 #repeat 对元素进行复重 print(arr2.repeat(2,axis=0)) print(arr2.repeat(2,axis=1)) [[1 2 3 8 1 2 3 8] [1 3 6 9 1 3 6 9]] [[1 2 3 8] [1 2 3 8] [1 3 6 9] [1 3 6 9]] [[1 1 2 2 3 3 8 8] [1 1 3 3 6 6 9 9]] #以下函数用法一致 #求和 print(np.sum(arr2)) print(np.sum(arr2,axis=0)) print(np.sum(arr2,axis=1)) #均值 np.mean() #保准差 np.std() #方差 np.var() #最下值 np.min() #最大值 np.max() #最小值索引 np.argmin() #最大值索引 np.argmax() #累计积 np.cumprod() #累计和 np.cumsum()