Numpy入门,看这一篇就够了!
蚂蚁学Python
共 4041字,需浏览 9分钟
· 2021-10-23
大家好,我是J哥。🚀
本文系统讲解Numpy基础知识,对于初学数据处理和分析帮助很多,希望你能收藏此文,好好学习,以下是本文框架结构:
本文目录
基本类型
类型转换
j = np.arange(3)
print(j)
print('查看数据类型:\n',j.dtype)
print('-'*20)
g = j.astype('float') #转换为float类型
print('查看转换后类型:\n',g.dtype)
[0 1 2]
查看数据类型:
int64
--------------------
查看转换后类型:
float64
创建数组
#方法一、将列表或元组传入np.array()来创建
print(np.array([1,2,3]))
#方法二、初始化数组的值,只需传入元素个数即可
print(np.ones(3))
print(np.zeros(3))
print(np.random.random(3))
[1 2 3]
[1. 1. 1.]
[0. 0. 0.]
[0.71318806 0.95903425 0.75384478]
数组运算
#首先创建两个数组
data1 = np.array([1,2])
data2 = np.ones(2)
print(data1,data2)
[1 2] [1. 1.]
#数组间加减乘除
jia = data1+data2
jian = data1-data2
cheng = data1*data2
chu = data1/data2
#数组与单个数值的操作
shuzhi1 = data1*100
shuzhi2 = data1/100
print(jia,jian,cheng,chu,shuzhi1,shuzhi2)
[2. 3.] [0. 1.] [1. 2.] [1. 2.] [100 200] [0.01 0.02]
数组切片
#类似列表操作进行索引和切片
data3 = np.array([1,2,3,4,5])
print(data3)
print(data3[0])
print(data3[2:4])
print(data3[2:])
print(data3[:4])
[1 2 3 4 5]
1
[3 4]
[3 4 5]
[1 2 3 4]
聚合函数
data4 = np.array([1,2,3,4,5])
print(data4.max()) #最大值
print(data4.min()) #最小值
print(data4.mean()) #均值
print(data4.sum()) #求和
print(data4.std()) #标准差
5
1
3.0
15
1.4142135623730951
创建矩阵
#方法一、通过将二维列表传给Numpy来创建矩阵
print(np.array([[1,2],[3,4]]))
#方法二、传入一个元组来描述矩阵的维度
print(np.ones((3,2))) #3行2列矩阵
print(np.zeros((3,2)))
print(np.random.random((3,2)))
[[1 2]
[3 4]]
[[1. 1.]
[1. 1.]
[1. 1.]]
[[0. 0.]
[0. 0.]
[0. 0.]]
[[0.2928769 0.24093443]
[0.06189287 0.62359846]
[0.80539105 0.81706549]]
矩阵运算
#相同大小矩阵的加减乘除
data5 = np.array([[1,2],[3,4]])
data6 = np.ones((2,2))
jia1 = data5 + data6
cheng1 = data5 * data6
print(jia1,'\n',cheng1)
[[2. 3.]
[4. 5.]]
[[1. 2.]
[3. 4.]]
#不同大小矩阵的加减乘除(仅两个矩阵秩数为1时)
data7 = np.array([[1,2],[3,4],[5,6]])
data8_1 = np.ones((1,2)) #行秩为1
data8_2 = np.ones((3,1)) #列秩为1
print(data7 + data8_1)
print('-'*20)
print(data7 + data8_2)
[[2. 3.]
[4. 5.]
[6. 7.]]
--------------------
[[2. 3.]
[4. 5.]
[6. 7.]]
#矩阵乘法,dot()方法
data9 = np.array([[1,2,3]]) #1*3的矩阵
data10 = np.array([[1,2],[3,4],[5,6]]) #3*2的矩阵
data11 = data9.dot(data10) #1*2的矩阵
print(data11)
[[22 28]]
矩阵切片和聚合
#可以在不同维度上使用索引操作来对数据进行切片
data12 = np.array([[1,2],[3,4],[5,6]])
print(data12)
print(data12[0,1]) #1行2列数据
print(data12[1:3]) #2-3行
print(data12[0:2,0]) #1-2行,1列
[[1 2]
[3 4]
[5 6]]
2
[[3 4]
[5 6]]
[1 3]
#可以像聚合向量一样聚合矩阵
print(data12.max())
print(data12.min())
print(data12.sum())
print(data12.mean())
print(data12.std())
#还可以使用axis参数指定行和列的聚合
print(data12.max(axis = 0)) #纵向执行
print(data12.max(axis = 1)) #横向执行
6
1
21
3.5
1.707825127659933
[5 6]
[2 4 6]
矩阵转置和重构
#NumPy数组的属性T可用于获取矩阵的转置
print('转置前:\n',data12)
print('转置后:\n',data12.T)
转置前:
[[1 2]
[3 4]
[5 6]]
转置后:
[[1 3 5]
[2 4 6]]
In:
#在较为复杂的用例中,可能需要使用NumPy的reshape()方法改变某个矩阵的维度
data13 = np.array([1,2,3,4,5,6])
print('重构前:\n',data13)
print('重构后:\n',data13.reshape(2,3))
print('重构后:\n',data13.reshape(3,2))
Out:
重构前:
[1 2 3 4 5 6]
重构后:
[[1 2 3]
[4 5 6]]
重构后:
[[1 2]
[3 4]
[5 6]]
In:
#上文中的所有功能都适用于多维数据,其中心数据结构称为ndarray(N维数组)
data14 = np.array([[[1,2],[3,4]],[[5,6],[7,8]]])
print(data14)
print('-'*20)
#改变维度只需在NumPy函数的参数中添加一个逗号和维度
print(np.ones((4,3,2)))
print('-'*20)
print(np.zeros((4,3,2)))
print('-'*20)
print(np.random.random((4,3,2)))
Out:
[[[1 2]
[3 4]]
[[5 6]
[7 8]]]
--------------------
[[[1. 1.]
[1. 1.]
[1. 1.]]
[[1. 1.]
[1. 1.]
[1. 1.]]
[[1. 1.]
[1. 1.]
[1. 1.]]
[[1. 1.]
[1. 1.]
[1. 1.]]]
--------------------
[[[0. 0.]
[0. 0.]
[0. 0.]]
[[0. 0.]
[0. 0.]
[0. 0.]]
[[0. 0.]
[0. 0.]
[0. 0.]]
[[0. 0.]
[0. 0.]
[0. 0.]]]
--------------------
[[[0.37593802 0.42651876]
[0.74639264 0.19783467]
[0.787414 0.63820259]]
[[0.84871262 0.46467497]
[0.54633954 0.4376995 ]
[0.71988166 0.9306682 ]]
[[0.6384108 0.74196991]
[0.73857164 0.38450555]
[0.68579442 0.64018511]]
[[0.60382775 0.35889667]
[0.8625612 0.86523028]
[0.83701853 0.08289658]]]
In:
#在NumPy中可以很容易地实现均方误差。
np_1 = np.ones(3)
np_2 = np.array([1,2,3])
error = (1/3) * np.sum(np.square(np_1 - np_2))
print(error)
Out:
1.6666666666666665
电子表格和数据表
音频和时间序列
图像
黑白图像
彩色图像
评论
老爸嘲讽我了,写破代码一年就挣十几万,他在工地带50个工人,一个月光人头费就3万,让我滚回去跟他干!
点击上方 "大数据肌肉猿"关注, 星标一起成长点击下方链接,进入高质量学习交流群今日更新| 1052个转型案例分享-大数据交流群来自:网络,侵删有个网友的父亲是做工程的,天天就嘲笑他,说他天天写着破代码有啥用,一年就拿个十多万的死工资,然后告诉他自己在工地里面带了50个工人,一个月能抽三万
程序源代码
0
真心建议大家搞个香港身份,再不冲就晚了
香港一直有“互联网荒漠”之称,疫情这三年,香港开始大力扶持互联网 科技工程 /IT产业,公布了《香港智慧城市蓝图》。目前规划已经覆盖到交通、医疗、经济、教育、环境等多个方面。目前在智能制造,5G网络、智慧城市等领域人才,通过香港优才计划入境都极具优势。什么是香港优才计划优才计划,全称优秀人才入境计划
公子龙
0
网友发问:事业编一年6万,干35年退休挣200万,程序员一年60万,5年就挣300万,事业编再爽能有程序员干五年退休爽?
上一篇:阿里P9被裁,赔偿82w在职场中,我们不可避免地会面临多样的工作机会和选择。然而,如果我们仅将这些不同的工作机会仅以金钱作为衡量标准,那么这种比较就显得过于肤浅和狭隘。一些人可能会通过直接的数学计算来决定哪个职业道路更有利可图,但这种方法忽视了工作的本质、工作量的大小、职业成长的机会,以及经
开发者全社区
0
一篇文章带你了解JavaScript作用域
点击上方“前端进阶学习交流”,进行关注回复“前端”即可获赠前端相关学习资料今日鸡汤杨家有女初长成,养在深闺人未识。在JavaScript中,对象和函数也是变量。在JavaScript中,作用域是你可以访问的变量、对象和函数的集合。JavaScript 有函数作用域: 这个作用域在函数内变化。一、本地
前端进阶学习交流
0
47岁了,要失业了。工作二十多年,存款大几百万,两套房,目前为是否找工作纠结,还是不甘心,觉得还没老就没用了
上一篇:得知下属工资比我高5K,我气得直接提了离职,HR却疑惑问我为什么,能留下再加5k,有机会升职管整个部门47岁了,面临失业的现实,但若能在私营企业工作至这一年龄,已经算是达到了职业生涯的一个高峰。面对这样的情况,是否应该感到沮丧?其实不必,考虑到个人的资产状况——拥有两套房产和数百万的存款,加
开发者全社区
10
L4 自动驾驶是骗局?华为徐直军:我们起点就瞄准L4
图源:“华为智能汽车解决方案”公众号撰文 | 程子筠编辑 | 神璐璐审核 | 刘玉琳封面 | “华为智能汽车解决方案”公众号泰伯网讯,在第21届华为分析师大会上,华为副董事长、轮值董事长徐直军在演讲中提到:“华为智能驾驶的起点就是瞄准L4的架构和L4的目标,其次向下适配不同车型的
泰伯网
9
雷军回应被称爽文第一男主;Meta推出开源大模型Llama 3;特步就北京半程马拉松赛发布致歉声明
雷军:没模仿马斯克、乔布斯,卡里也没有冰冷的40亿,SU7正式版本开始交付4月18日,小米集团CEO雷军开播,与网友畅谈SU7开售这20天并带领大家参观小米交付中心。在直播中雷军称:”很多人都催我们快一点交付啊,雷总你能不能去工厂打螺丝啊。今天我们这个工厂是现代化工厂啊,主要的工艺都是全自动化生产的
亿欧网
0
一篇文章带你了解JavaScript switch
点击上方“前端进阶学习交流”,进行关注回复“前端”即可获赠前端相关学习资料今日鸡汤舍身而取义者也!Switch是与if ... else ...相同的条件语句,不同之处在于switch语句允许根据值列表测试变量是否相等。switch 语句用于根据不同的条件执行不同的操作。一、Switch 语句使用s
前端进阶学习交流
0