Numpy基础知识 原创

1318-卜同学

发表文章数:13

首页 » 数据科学库 » 正文

一级目录

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设置。打开如下图,即可查看是否按照。

Numpy基础知识                    原创

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)

未经允许不得转载:作者:1318-卜同学, 转载或复制请以 超链接形式 并注明出处 拜师资源博客
原文地址:《Numpy基础知识 原创》 发布于2020-11-25

分享到:
赞(0) 打赏

评论 抢沙发

评论前必须登录!

  注册



长按图片转发给朋友

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

Vieu3.3主题
专业打造轻量级个人企业风格博客主题!专注于前端开发,全站响应式布局自适应模板。

登录

忘记密码 ?

您也可以使用第三方帐号快捷登录

Q Q 登 录
微 博 登 录