数据分析基础之《numpy(4)—ndarry运算》

一、逻辑运算

当我们要操作符合某一条件的数据时,需要用到逻辑运算

1、运算符

满足条件返回true,不满足条件返回false

python 复制代码
# 重新生成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的所有值

python 复制代码
# 布尔索引
stock_change[stock_change > 0.5]

二、通用判断函数

1、np.all()

传入一组布尔值,只要有一个false,就返回false,全都是true才返回true

2、np.any()

传入一组布尔值,只要有一个true,就返回true,全都是false才返回false

3、例子

python 复制代码
# 判断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、例子

python 复制代码
# 判断前四个股票前四天的涨跌幅,大于0的置为1,否则为0
temp = stock_change[:4, :4]

temp

np.where(temp > 0, 1, 0)

3、np.logical_and 逻辑与

4、np.logical_or 逻辑或

5、例子

python 复制代码
# 判断前四个股票前四天的涨跌幅,大于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、例子

python 复制代码
# 对于前四个股票前四天数据,进行一些统计运算
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、例子

python 复制代码
# 获取股票指定哪一天的涨幅最大
print("前四只股票前四天内涨幅最大{}".format(np.argmax(temp, axis=1)))
print("前四天一天内涨幅最大的股票{}".format(np.argmax(temp, axis=0)))

五、数组运算

1、场景

平时成绩占30%,期末成绩占70%,算出最终成绩

2、数组与数的运算

运算符作用到数组中的每一个元素

python 复制代码
# 数组与数的运算
arr = np.array([[1,2,3,2,1,4], [5,6,1,2,3,1]])

arr + 10

3、数组与数组的运算

python 复制代码
# 数组与数组的运算
arr1 = np.array([[1,2,3,2,1,4], [5,6,1,2,3,1]])
arr2 = np.array([[1,2,3,4], [3,4,5,6]])
arr1 + arr2

提示不满足广播机制!

4、广播机制

(1)执行broadcast的前提在于,两个nadarray执行的是element-wise的运算,Broadcast机制的功能是为了方便不同形状的ndarray(numpy库的核心数据结构)进行数学运算

(2)当操作两个数组时,numpy会逐个比较它们的shape(构成的元组tuple),只有在下述情况下,两个数组才能够进行数组与数组的运算

维度相等(单看这一列)

shape(其中相对应的一个地方为1)

(3)可以这样理解,首先把数组形状展开,从右到左按列来看,两个情况中只要满足一个就可以

以下情况不匹配:

(4)运算的结果,每一个维度取最大的

(5)例子

python 复制代码
arr1 = np.array([[1,2,3,2,1,4], [5,6,1,2,3,1]])
arr2 = np.array([[1], [3]])

arr1 # (2, 6)

arr2 # (2, 1)

arr1 + arr2

arr1是2行6列,arr2是2行1列

相加的结果,维度相同的,对应的每一行分别运算,维度为1的对所有行运算

六、矩阵运算

1、如何才能进行学生成绩计算呢

2、什么是矩阵

矩阵,英文matrix,和array的区别矩阵必须是2维的,但是array可以是多维的

3、两种方法存储矩阵

(1)ndarray 二维数组

python 复制代码
# 矩阵运算
# ndarray存储矩阵
data = np.array([[80,86], [82,80], [85,78], [90,90], [86,82], [82,90], [78,80], [92,94]])

data

type(data)

(2)matrix 数据结构

np.mat()

将数组转换成矩阵类型

python 复制代码
# matrix存储矩阵
data_mat = np.mat([[80,86], [82,80], [85,78], [90,90], [86,82], [82,90], [78,80], [92,94]])

data_mat

type(data_mat)

4、矩阵乘法运算

矩阵乘法的两个关键:形状改变和运算规则

(1)形状改变

必须符合上面的式子,否则运算出错。第一个矩阵的列数和第二个矩阵的行数要一致

(2)运算规则

5、ndarray矩阵乘法api

np.matmul:矩阵相乘

np.dot:点乘

6、计算成绩

ndarray存储方式

python 复制代码
# 计算成绩
data

weights = np.array([[0.3], [0.7]])

weights

np.matmul(data, weights)

np.dot(data, weights)

matrix存储方式

python 复制代码
weights_mat = np.mat(weights)

weights_mat

data_mat * weights_mat
相关推荐
人工智障调包侠7 分钟前
基于深度学习多层感知机进行手机价格预测
人工智能·python·深度学习·机器学习·数据分析
唐Sun_数智人3 小时前
IIOT工业物联网的数据分析与预测维护_SunIOT
物联网·数据挖掘·数据分析
羊小猪~~15 小时前
深度学习项目----用LSTM模型预测股价(包含LSTM网络简介,代码数据均可下载)
pytorch·python·rnn·深度学习·机器学习·数据分析·lstm
大神薯条老师17 小时前
Python从入门到高手5.1节-Python简单数据类型
爬虫·python·深度学习·机器学习·数据分析
搞大屏的小北 BI1 天前
国内旅游:现状与未来趋势分析
信息可视化·数据分析·旅游·数据可视化·bi 工具
Hello.Reader1 天前
TopK算法在大数据重复数据分析中的应用与挑战
大数据·算法·数据分析
安静的_显眼包O_o1 天前
【数据分析】DataFrame.query()
数据挖掘·数据分析·pandas
羊小猪~~1 天前
机器学习/数据分析--用通俗语言讲解时间序列自回归(AR)模型,并用其预测天气,拟合度98%+
人工智能·python·机器学习·数据挖掘·数据分析·回归·时序数据库
凭栏落花侧1 天前
决策树:简单易懂的预测模型
人工智能·算法·决策树·机器学习·信息可视化·数据挖掘·数据分析
bin91531 天前
【EXCEL数据处理】000010 案列 EXCEL文本型和常规型转换。使用的软件是微软的Excel操作的。处理数据的目的是让数据更直观的显示出来,方便查看。
大数据·数据库·信息可视化·数据挖掘·数据分析·excel·数据可视化