一、逻辑运算
当我们要操作符合某一条件的数据时,需要用到逻辑运算
1、运算符
满足条件返回true,不满足条件返回false
# 重新生成8只股票10个交易日的涨跌幅数据
stock_change = np.random.normal(loc=0, scale=1, size=(8, 10))
# 获取前5行前5列的数据
stock_change = stock_change[0:5, 0:5]
# 逻辑判断,如果涨跌幅大于0.5,就标记为true,否则标记为false
stock_change > 0.5
2、布尔索引
想要对布尔数据进行一个统一的操作,相当于是取出数组中为true的所以值,或为false的所有值
# 布尔索引
stock_change[stock_change > 0.5]
二、通用判断函数
1、np.all()
传入一组布尔值,只要有一个false,就返回false,全都是true才返回true
2、np.any()
传入一组布尔值,只要有一个true,就返回true,全都是false才返回false
3、例子
# 判断stock_change是否全是上涨的
np.all(stock_change > 0)
stock_change
# 判断stock_change是否有上涨的
np.any(stock_change > 0)
三、np.where(三元运算符)
1、通过使用np.where能够进行更加复杂的运算
np.where(布尔值, true的位置要设置的值, false的位置要设置的值)
2、例子
# 判断前四个股票前四天的涨跌幅,大于0的置为1,否则为0
temp = stock_change[:4, :4]
temp
np.where(temp > 0, 1, 0)
3、np.logical_and 逻辑与
4、np.logical_or 逻辑或
5、例子
# 判断前四个股票前四天的涨跌幅,大于0.5并且小于1的,置为1,否则置为0
np.where(np.logical_and(temp > 0.5, temp < 1), 1, 0)
# 判断前四个股票前四天的涨跌幅,大于0.5或者小于-0.5的,置为1,否则置为0
np.where(np.logical_or(temp > 0.5, temp < -0.5), 1, 0)
四、统计运算
1、如果想要知道涨幅或者跌幅最大的数据,应该怎么做
2、统计指标函数
np.min(a, axis=None, out=None, keepdims=False):最小值
np.max(a, axis=None, out=None, keepdims=False):最大值
np.mean(a, axis=None, out=None, keepdims=False):平均值
np.median(a, axis=None, out=None, keepdims=False):中位数
np.var(a, axis=None, out=None, keepdims=False):方差
np.std(a, axis=None, out=None, keepdims=False):标准差
3、可以用两种方式调用
np.函数名
ndarray.方法名
4、axis默认为axis=0即列向,如果axis=1即横向
5、例子
# 对于前四个股票前四天数据,进行一些统计运算
print("前四只股票前四天的最大涨幅{}".format(np.max(temp, axis=1)))
print("前四只股票前四天的最大跌幅{}".format(np.min(temp, axis=1)))
print("前四只股票前四天的波动程度{}".format(np.std(temp, axis=1)))
print("前四只骨片前四天的平均涨跌幅{}".format(np.mean(temp, axis=1)))
6、获得最大值最小值的位置(索引)
np.argmax(a, axis)
np.argmin(a, axis)
7、例子
# 获取股票指定哪一天的涨幅最大
print("前四只股票前四天内涨幅最大{}".format(np.argmax(temp, axis=1)))
print("前四天一天内涨幅最大的股票{}".format(np.argmax(temp, axis=0)))