机器学习—Numpy基础知识

一级目录

NumPy简介

NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。NumPy 的科学计算十分高效,因此弥补了 Python 在运算效率上的不足。正是因为 NumPy,Python 才可以像 MATLAB 那样高效地执行矩阵运算。
NumPy 的前身 Numeric 最早是由 Jim Hugunin 与其它协作者共同开发,2005 年,Travis Oliphant 在 Numeric 中结合了另一个同性质的程序库 Numarray 的特色,并加入了其它扩展而开发了 NumPy。NumPy 为开放源代码并且由许多协作者共同维护开发。

NumPy 是一个运行速度非常快的数学库,主要用于数组计算,包含:

(1)一个强大的N维数组对象 ndarray
(2)广播功能函数
(3)整合 C/C++/Fortran 代码的工具
(4)线性代数、傅里叶变换、随机数生成等功能

windows系统下可通过如下的方法查看pycharm开发工具下是否导入numypy库。打开pycharm,新建python项目,在菜单栏打开settings设置。打开如下图,即可查看是否按照。

在这里插入图片描述

import numpy as np

注:在 Python 内导入 NumPy 库,「np」简写即调用NumPy 时约定俗成的命名。

NumPy基本属性

#numpy数据库的使用
import numpy as np
# python array
a = [1,2,3,4,5,6,7,8,9]
# numpy array
A = np.array([[1,2,3,4,5,6,7,8,9],
              [1,2,3,4,5,6,7,8,9]])
print("a为",a)

print("A为",A)

print(type(a))
print(type(A))
print("shape:",A.shape)  #数组的形状行数和列数
print("Dim of A:",A.ndim)  #数组的几维的
print("Size of A:",A.size)  #数组的大小,总共有几个元素

结果为
a为 [1, 2, 3, 4, 5, 6, 7, 8, 9]
A为 [[1 2 3 4 5 6 7 8 9]
[1 2 3 4 5 6 7 8 9]]
<class ‘list’>
<class ‘numpy.ndarray’>
shape: (2, 9)
Dim of A: 2
Size of A: 18

数组的形状是它有多少行和列,上面的数组有5行和5列,所以它的形状是(5,5)。
itemsize 属性是每个项占用的字节数。
ndim 属性是数组的维数。这个有2个。例如,向量只有1。
nbytes 属性是数组中的所有数据消耗掉的字节数。你应该注意到,这并不计算数组的开销,因此数组占用的实际空间将稍微大一点。

那么为什么要使用 NumPy 数组而不使用标准的 Python 数组呢?原因可能是 NumPy 数组远比标准数组紧密,在使用同样单精度变量下,NumPy 数组所需要的内存较小。此外,NumPy 数组是执行更快数值计算的优秀容器。

numpy的基本操作

基本操作1

np.arange()
np.zeros
np.linspace

# numpy的基本操作
import numpy as np
a=np.array([2,3,4],dtype=np.float32) #dtype定义了矩阵的数值类型是整形或者浮点float或者int
print(a)
b=np.zeros((3,4))  #34全为1的矩阵
c=np.ones((3,4))  #34全为1的矩阵
d=np.arange(10,20,2)  #arange功能类似于python中的range功能,arange(首,尾,步长)
e=np.arange(16).reshape((4,4))  #尺寸和形状
f=np.linspace(1,26,6).reshape((2,3))  #直线型矩阵(首,尾,段数),形状
print(b)
print(c)
print(d)
print(e)
print(f)

基本操作2

(1) 基本操作

# 加减法乘法平方
import numpy as np
a=np.array([10,20,40,34])   #array后的格式括号里面套中括号
b=np.arange(4)
c=a-b
print(a+b,"###",c)
print(b**2)  #一般b的平方是b^2在python中为双雪花符号
# print(np.sin(c))  #求sin计算
# print(c)
# print(c<3)  #运算c中小于3的数值,小于3输出True否则输出False,同样c==3判断等于3的位置
d=a*b  #为对应位置逐个相乘
d_dot=np.dot(a,b)  #按照矩阵乘法相乘 ,该式和d_dot_2=a.dot(b)等价
print(d)
print(d_dot)

(2)基本操作

#  numpy中的基本操作
import numpy as np
a=np.random.random((2,4))
print(a)
# print(np.sum(a)) #求和
# print(np.max(a)) #最大值
# print(np.min(a)) #最新值
print(np.sum(a,axis=1)) #axis=1代表在行数中求和
print("****************")
print(np.max(a,axis=0)) # axis=0代表在列数中的最大值
print("****************")
print(np.min(a,axis=1))

(3)基本操作

#  numpy中的基本操作
import numpy as np
A=np.arange(1,25).reshape((4,6))
print(A)
# print(np.argmin(A))  #矩阵A中的最小值位置索引
# print(np.argmax(A))  #矩阵A中的最大值位置索引
print(np.mean(A)) #与print(A.mean())和print(np.average(A))等价
print(np.median(A)) #求中位数
print(np.cumsum(A)) # 累加
print(np.diff(A))  #相邻的数相减
print(np.sort(A))  # 逐行的排序(从小到大)
print(A.T)  #矩阵A的转置矩阵
print(np.clip(A,6,12)) #A矩阵中小于6的数设置为6,大于12的数设置为12,中间的不变
print(np.mean(A,axis=1))  #A矩阵中按照行输出平均值

numpy的索引

#  numpy中的基本操作
import numpy as np
A=np.arange(1,25).reshape((4,6))
print(A)
# print(A[1][1])  #与print(A[1,1])是一样的功能
# print(A[1,:])  #表示打印第一列的所有数  print(A[:,2])
# print(A[1,1:2]) #表示第一行第一列第二个位置的数字,注意行和列都是从0数起
for row in A: #迭代行
    print(row)
for col in A.T:  # 迭代列
    print(col)
print(A.flatten())
for item in A.flat:  # 迭代每一项
    print(item)

numpy中array的合并、分割与复制

(1)numpy中的合并

# numpy中array的合并
import numpy as np
a=np.array([1,1,1])[:,np.newaxis] #加上[:,np.newaxis]后就变为纵向的矩阵
b=np.array([2,3,4])[:,np.newaxis]
c=np.vstack((a,b)) #垂直维度合并
d=np.hstack((a,b)) #水平维度合并
print(c)
print(d)
print(c.shape,d.shape)
f=np.concatenate((a,a,b,b),axis=1)  # axis=1是横向合并;axis=0是垂直向合并
print(f)

(2)numpy中的分割

# numpy中array的分割
import numpy as np
a=np.arange(12).reshape((3,4))
print(a)
# print(np.split(a,4,axis=1)) #split是等分,若要进行不等分的分割np.array_split()d的方法
print(np.array_split(a,2,axis=1))
print(np.vsplit(a,3)) #垂直方向分割
print(np.hsplit(a,2)) #垂直方向分割

(3)numpy中的copy

#numpy的 copy & deep copy
import numpy as np
a=np.arange(4)
# print(a)
b=a
c=a
a[0]=13# a,b,c三者之间是关联的改变一个另个也会改变
c[0]=12
print(a)
print(b)  #a和b始终是同一个对象
b=a.copy() #deep copy
a[2]=22
print(a)
print(b)
Python网络爬虫与推荐算法新闻推荐平台:网络爬虫:通过Python实现新浪新闻的爬取,可爬取新闻页面上的标题、文本、图片、视频链接(保留排版) 推荐算法:权重衰减+标签推荐+区域推荐+热点推荐.zip项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计,皆可应用在项目、毕业设计、课程设计、期末/期/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

1318_卜献宝

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值