目录
5、整体运算(聚合函数、点击运算、权重、axis)
创建NDArray数组,如果列表中有多种类型则会执行强制转换。转换遵循向上兼容原则:整数->浮点数->str等各类对象
1、从列表生产数组
import nunmpy as np
x=[1,2,3,'abc','你']
np.array(x)
numpy的array类规定,如果包含超过一个元素,就不能被视作逻辑值
2、用函数生产规律性数组
a = np.zeros(10,dtype='int') #生成10个0
b = np.zeros((3,4),dtype='int') #生成三行四列全0的矩阵
c = np.ones((3,4),dtype='int') #生成三行四列全1的矩阵
d = np.eye((3,4),dtype='int') #生成对角线全市1其他位置全是0的矩阵
e = np.arange(1,5) #生成从1开始到5之前结束的数列
f = np.arange(-5,10,3) #生成从-5开始到10的数列并指定间隔为3 →[-5,-2,1,4,7]
#arange允许小数作为间隔
3、用函数生成随机数组
a1 = np.random.rand(3) #生成3个,0-1之间的随机小数
a2 = np.random.rand(3,5) #生成3行5列,0-1之间的随机小数
b = np.random.randint(-10,10,(3,5)) #生成大于等于-10,小于10,共计3行5列
c = np.random.choice(['杨幂','杨紫','杨洋'],(3,3))#每次从列表中随机抽取一个值,共计3行3列
4、numpy读取文件
常用于文本文件,比如csv或数据之间都用都好隔开的文件
numpy.loadtxt(文件路径, 分隔符, 类型)函数将文本文件读入数组,读入的数字默认视作浮点数,可以通过dtype参数指定类型:
# 读取txt文件中以逗号分隔的整数
a = np.loadtxt('d:/demo/AAA.txt',delimiter=',',dtype='int')
需要注意的是如果文件中存在缺失值会导致读取失败。
numpy.genfromtxt(文件路径, 分隔符, 类型, 填充值)函数将文本文件读入数组,如果文件中存在缺失值则使用填充值进行填充:
# 读取文件,缺失值以0填充
a = np.genfromtxt('d/demo/BBB.txt', delimiter=',', dtype='int', filling_values=0)
5、读取Excel
df = pd.read_excel(r"路径“,sheet_name="文件名")
a = np.array(df)
6、整体运算
整体运算方法一:加减乘除,一视同仁。在numpy中无论是几维数组,都可以直接与数字进行加减乘除运算,规则是将数组中的每一个元素与该数字进行运算。
a = np.random.randint(1, 10, 5)
b = a + 5
整体运算方法二:通用函数,雨露均沾。numpy函数不改变原数组,只是用计算结果生成新数组。numpy函数对数组中的每一个元素都进行处理,例如求二维数组中所有元素的绝对值:
a = np.random.randint(-100, 100, (3, 5))
y = np.abs(x)
numpy中常用的数学函数:
round 四舍五入,可以指定精度 abs 求绝对值 sqrt 求平方根 exp 求指数 log 求自然对数 log2 计算以2为底的对数 log10 计算10为底的对数 ceil 大于等于该值的最小整数 floor 小于等于该值的最大整数 sin、cos、tan 正弦、余弦、正切 arccos、arcsin、arctan 反三角函数
Math库的不足:大部分函数只能用来计算单个数字,不能处理列表、数组等容器结构。
np.round(x, 位数)函数对小数进行四舍五入操作。“位数”是可选参数,默认只保留四射五入后的整数部分。
x = np.random.rand(3, 5) #随机生成3行5列的矩阵
np.round(x, 2) # 四舍五入保留两位小数
np.round(x) # 四舍五入保留整数
整体运算方法三:同形数组,对位计算。同形数组是指相同形状的数组,数组维度一样,行数列数相同。规则是按照两个数组中相同位置上的元素对应计算(对位计算)。例如将两个二维数组相除,保留2位小数:
a = np.random.randint(100, 200, (3, 5))
b = np.random.randint(100, 200, (3, 5))
np.round( a / b , 2)
点积运算要求第一个数组的列数与第二个数组的行数相等,其结果数组的行数等于第一个数组的行数,列数等于第二个数组的列数。例如有“数组1”行列数为(2, 3),“数组2”行列数为(3, 2),它们点积后的“数组3”的行列数为(2, 2)。
点积运算的计算规则:行看左边,列看右边。
整体运算方法四:矩阵点积,行列归一。对满足矩阵点积运算要求的两个数组a与b进行运算,通过数组类的方法 a.dot(b) 可以直接计算点积结果。
sh = np.loadtxt('d:/demo/销量.txt', delimiter=',', dtype='int')
bonus = np.array([
[300, 150, 200, 200],
[300, 150, 250, 300],
[200, 80, 100, 100]
])
bonus.dot(sh)
文章觉得不错,点个赞吧!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
描述性统计是指使用一个或多个简单的数值描绘出成千上万数据整体的特征,例如最大值、最小值、平均数、总和、方差、标准差等等。
numpy中为描述性统计提供了统计函数(聚集函数),包括:
max 最大值 min 最小值 sum 总和 mean 平均数(算数) average 平均数(算数或加权) std 标准差 median 中位数 ptp 极差(最大值减最小值) var 样本方差 percentile 百分位数
部分聚集函数除了使用“numpy.函数名()”方式调用之外,也支持使用“数组.方法名()”方式来调用
import numpy as np
x = np.array([1,2,3])
np.max(x) #使用max函数求数组元素最大值
average函数权重表示该数据对于整体数据重要性的比重值,例如有平时、期中、期末三个成绩,平时成绩重要性占20%,期中成绩占30%,期末成绩占50%,那么这三个分数对应的权重为:20、30、50。
average函数使用weights参数设置权重对数组进行平均数计算,例如设置三个分数的权重分别为:20、30、50 求平均分:
score = np.array([70, 80, 96])
np.average(score, weights = [20, 30, 50])
在Python中使用方括号“[]”表示高纬度数,遵循以下原则:
1. 同一个数据集里的所有内容最终一定涵盖在一对方括号里面。
2. 一层方括号就代表有一个维度。
维度就是特征,从左到右依次编号:0、1、2 。。。
统计函数中的 axis 维度参数,使用 axis 参数设置统计维度,可以针对不同的维度进行统计计算。
二维数组中的axis:
例如在二维数组中分别对第1号维度、第0号维度求和:
统计计算的结果中对编号1的维度进行合并,数据集从二维降至一维。同理,当 axis 值为0时,对编号0的维度进行合并。
案例:
1、求每一种产品在1-6月的总销售量:
np.sum(sh,axis=1)
当axis=1时,就意味着把1号维度(月份)全部消灭,月份消失只剩下0号维度(产品)一列数据。
2、求每月销售总额:
np.sum(sh,axis=0)
当axis=0时,就意味着把0号维度(产品)这个维度全消灭,只保留月份维度一行数据。相当于二维降到一维。
三维数组中的axis:(aixs等于谁就是求谁)
#三维数组:0号维度科目,1号维度姓名,2号维度成绩
stu = np.array([
[[80, 65, 77], [40, 30, 90], [80, 88, 60]],
[[10, 15, 19], [20, 25, 89], [30, 38, 56]],
[[50, 55, 59], [90, 95, 77], [40, 48, 69]],
])
a = np.max(stu, axis=0)
四维数组中的axis:更新中
矩阵相加,案例
用pandas 读取excel数据,转换为numpy数组后可矩阵相加
import pandas as pd
import numpy as np
tongji =pd.read_excel(r"统计表.xlsx",sheet_name="统计表")
zheng =pd.read_excel(r"周度数据.xlsx",sheet_name="本周各镇数据")
df1= np.array(tongji.iloc[4:22,0:12])
df2 = np.array(zheng.iloc[4:22,0:12])
data=pd.DataFrame(df1+df2)
data.to_excel(r"C:\Users\HP\Desktop\夹心层.xlsx")
文章觉得不错,点个赞吧!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!