Py之Numpy:Numpy库简介、安装、使用方法、案例应用之详细攻略
目录
Numpy库简介
补充—Numpy库的缺点
Numpy库安装
Numpy库使用方法
0、要生成NumPy数组,需要使用np.array()方法
1.1、np基本计算
1.2、np算数运算
1.3、np访问元素
2.1、NumPy来生成多维数组
2.2、关于随机数
3、Numpy中常用的函数
Numpy常用的一些方法或者函数
Numpy库的案例应用
相关文章
Py之Numpy:Numpy库简介、安装、使用方法、案例应用之详细攻略
Py之Numpy:Numpy库中常用函数的简介、应用之详细攻略
Numpy库简介
在深度学习的实现中,经常出现数组和矩阵的计算。NumPy的数组类(numpy.array)中提供了很多便捷的方法。
NumPy是用于数值计算的库,提供了很多高级的数学算法和便利的数组(矩阵)操作方法。NumPy是用Python进行科学计算的基本包。NumPy除了提供一些高级的数学运算机制以外,还具备非常高效的向量和矩阵运算功能。这些功能对于机器学习的计算仟务是尤为重要的。因为不论是数据的特征表示也好,还是参数的批P计一算也好,都离不开更加方便快捷的矩阵和向量计算。而NumPy更为突出的是它内部独到的设计,使得处理这些矩阵和向量计算比起一般程序员自行编写,甚至是Python自带程序库的运行效率都要高出许多。
它包含了其他的东西:
- 一个强大的n维数组对象
- 复杂(广播)功能
- C/C++与FORTRAN代码的集成工具
- 有用的线性代数、傅立叶变换和随机数能力
- 除了其明显的科学用途外,NUMPY还可以用作通用数据的多维容器。可以定义任意的数据类型。这允许NUMPY无缝地和快速地与各种各样的数据库集成。
- NUMPY是在BSD许可证下授权的,允许重用很少的限制。Numpy:用来存储和处理大型矩阵,提供了许多高级的数值编程工具,如矩阵数据类型、矢量处理,以及精密的运算库。专为进行严格的数字处理而产生。
- Scipy高级科学计算库:和Numpy联系很密切,Scipy一般都是操控Numpy数组来进行科学计算,所以可以说是基于Numpy之上了。Scipy有很多子模块可以应对不同的应用,例如插值运算,优化算法、图像处理、数学统计。
Numpy
numpy PyPi
numpy-mkl pypi
Py之Scipy:Python库之Scipy库的简介、安装、使用方法详细攻略
补充—Numpy库的缺点
1、for语句处理慢:NumPy中,存在使用for语句后处理变慢的缺点,NumPy中,访问元素时最好不要用for语句。
Numpy库安装
pip install numpy
pip install numpy-mk
whl文件下载:CSDN收藏:写文章临时常用的一些结构、链接、源文件等等
如有任何文件需要,可以留言告知
降版本180704-941
190514 更新
Numpy库使用方法
import numpy as np
0、要生成NumPy数组,需要使用np.array()方法
>>> import numpy as np
>>> x = np.array([1.0, 2.0, 3.0])
>>> print(x, type(x))
[1. 2. 3.] <class 'numpy.ndarray'>
1.1、np基本计算
np.argmax(a) #找到数组a中最大值的下标,有多个最值时得到第一个最值的下标
np.squeeze() #从数组的形状中删除单维条目,即把shape中为1的维度去掉
dtype=np.float) #强制生成一个 float 类型的数组
np.ceil(a) #计算各元素的ceiling 值, floor值(ceiling向上取整,floor向下取整)
np.floor(a)
1.2、np算数运算
NumPy 数组(np.array)可以生成N维数组,即可以生成一维数组、二维数组、三维数组等任意维数的数组。数学上将一维数组称为向量,将二维数组称为矩阵。另外,可以将一般化之后的向量或矩阵等统称为张量(tensor)。
numpy的一维数组
>>> x = np.array([1, 2, 3])
>>> y = np.array([2, 4, 6])
>>> x + y # 对应元素的加法
array([3, 6, 9])
>>> x * y #对应元素的乘法,element-wise product
array([ 2, 8, 18])
>>> x / y
array([0.5, 0.5, 0.5])
numpy的二维数组
>>> A = np.array([[1, 2], [3, 4]])
>>> B = np.array([[3, 0],[0, 6]])
>>> A + B
array([[ 4, 2],
[ 3, 10]])
>>> A * B
array([[ 3, 0],
[ 0, 24]])
#dot()函数是矩阵乘,而*则表示逐个元素相乘
a=np.array([[0,1],[2,3]])
b=np.array([[1,2],[3,4]])
print('矩阵相乘:',np.dot(a,b))
print('对应元素相乘:',a*b)
#dot应用:通过numpy的矩阵乘积进行神经网络的运算 X = np.array([1, 2]) W = np.array([[1, 3, 5], [2, 4, 6]]) Y = np.dot(X, W) print(Y)
1.3、np访问元素
元素的索引从0 开始。
>>> X = np.array([[11, 12], [21, 22], [31, 32]])
>>> X[0][1] #第0行的第1列,即12
12
for row in X: #也可以用for循环输出
print(row)
>>> X = X.flatten() # 将X转换为一维数组
>>> print(X)
[11 12 21 22 31 32]
>>> X[np.array([0, 2, 4])] # 获取索引为0、2、4的元素
array([11, 21, 31])
>>> X[X>15] #获取满足一定条件的元素
array([21, 22, 31, 32])
2.1、NumPy来生成多维数组
import numpy as np
A = np.array([[1,2], [3,4], [5,6]])
print(A)
print(np.ndim(A)) #获取数组的维数,二维数组也称为矩阵matrix
print(A.shape) #获取数组的形状
print(A.shape[0])
np.expand_dims #用法就是在axis的那一个轴上把数据加上去,这个数据在axis这个轴的0位置。如原本为一维的2个数据,axis=0,则shape变为(1,2),axis=1则shape变为(2,1) ,再例如 原本为 (2,3),axis=0,则shape变为(1,2,3),axis=1则shape变为(2,1,3)。 参考博客python numpy.expand_dims的用法
>>> x.shape
(2, 2)
>>> np.expand_dims(x,axis=0).shape
(1, 2, 2)
>>> np.expand_dims(x,axis=-1).shape
(2, 2, 1)
2.2、关于随机数
a=np.random.rand(5) #生成生成[0,1)之间随机浮点数,形状为5*1
b=np.random.randn(3,4) #生成标准正态分布的随机样本数,形状为3*4
b1=np.random.randn(3,4)*2-1 #生成标准正态分布的随机样本数,形状为3*4,取值范围[-1,1]
print(a)
print(b)
print(b1)
#利用random.randint函数生成0~10内10各随机数组为一个列表
import numpy
numpy.random.seed() #Fixing random state for reproducibility
list=numpy.random.randint(0,10,10)
print(list)
3、Numpy中常用的函数
x = np.array([[0.1, 0.8, 0.1], [0.3, 0.1, 0.6],[0.2, 0.5, 0.3], [0.8, 0.1, 0.1]])
y = np.argmax(x, axis=1) #沿着第1维方向(为轴)找到最大值的元素索引
print(y)
transpose()函数 #NumPy的transpose的轴顺序的更改:通过指定索引(编号),更改轴的顺序
transpose(0, 3, 1, 2) 'transpose方法:将输出大小转换为合适的形状。基于NumPy的transpose会更改多维数组的轴的顺序,它通过指定索引(编号),更改轴的顺序。 #比如:(N,H,W,C)对应索引(0,1,2,3) → (N,C,H,W)对应索引(0,3,1,2)'
Numpy常用的一些方法或者函数
1、numpy中函数nditer的作用
NumPy 1.6中引入的迭代器对象nditer提供了许多灵活的方式来以系统的方式访问一个或多个数组的所有元素。单数组迭代
'使用nditer可以完成的最基本任务是访问数组的每个元素。使用标准的python迭代器接口逐个提供每个元素。' a = np.arange(6).reshape(2,3) for x in np.nditer(a): print(x) 0 1 2 3 4 5
参考文章:https://docs.scipy.org/doc/numpy-1.10.0/reference/arrays.nditer.html
Numpy库的案例应用
DL之NN:利用numpy自定义三层结构+softmax函数建立3层完整神经网络
推荐文章
Numpy:利用Numpy库建立可视化输入的二次函数数据点集np.linspace+np.random.shuffle+np.random.normal