Numpy的认识
一个用python实现的科学计算包括:1、一个强大的N维数组对象Array;2、比较成熟的(广播)函数库;3、用于整合C/C++和Fortran代码的工具包;4、实用的线性代数、傅里叶变换和随机数生成函数。numpy和稀疏矩阵运算包scipy配合使用更加方便。
NumPy(Numeric Python)提供了许多高级的数值编程工具,如:矩阵数据类型、矢量处理,以及精密的运算库。专为进行严格的数字处理而产生。多为很多大型金融公司使用,以及核心的科学计算组织如:Lawrence Livermore,NASA用其处理一些本来使用C++,Fortran或Matlab等所做的任务。
基础
NumPy的主要对象是同构多维数组。它是一个元素表(通常是数字),都是相同类型的,由正整数元组索引。在NumPy中,维度称为轴线.
NumPy的数组类称为ndarray。它也是通过别名知道的。array。请注意numpy.array与标准Python库类不同array.array,它只处理一维数组,并提供较少的功能。的更重要的属性。
一 、数组的轴数(尺寸)。
ndarray.shape: 矩阵的大小
ndarray.size: 矩阵里元素的个数
type(ndarray): 矩阵的类型
import numpy as np
a = np.arange(15).reshape(3, 5)
print(a)
[[ 0 1 2 3 4] [ 5 6 7 8 9] [10 11 12 13 14]]
print(a.shape)
(3, 5)
print(type(a))
<class 'numpy.ndarray'>
二、构建特定的矩阵:
1、单位矩阵:
np.ones(shape=(a,b,c),dtype=None,order='C')
返回给定形状和类型的新数组,填充 1 。
shape:代表数据形状,是个元组,如果shape=5代表创建一个五个元素的一维数组,shape=(3,4) 代表创建一个3*4的数组,即a*b表示数组,c表示几个元素
dtype:数据类型,可选,数组所需的数据类型,例如dtype='int'。默认是 float64。
order:{'C','F'},可选是否以内存中的C或Fortran连续(行或列)顺序存储多维数据。
import numpy as np
print(np.ones(shape = (2,1,3),dtype='int',order= 'C'))
[[[1 1 1]]
[[1 1 1]]]
2、零矩阵
np.zeros(shape =(a,b,c),dtype=None,order='C')
返回给定形状和类型的新数组,填充 0 。
print(np.zeros(shape = (2,1,3),dtype='int',order= 'C'))
[[[0 0 0]]
[[0 0 0]]]
3、对角矩阵p
np.eye(N,M = None,k = 0,dtype = <type'float'>,order ='C' )
N:int -- 输出中的行数。M:int,可选 -- 输出中的列数。如果无,默认为Ñ
k:int,可选 -- 对角线索引:0(默认值)是指主对角线,正值是指上对角线,而负值是指向下对角线。
import numpy as np
print(np.eye(3))
[[1. 0. 0.] [0. 1. 0.] [0. 0. 1.]]
4、随机矩阵
print(np.empty((2,3)))
[[5.11798224e-307 3.44897992e-307 1.29060531e-306] [1.60218220e-306 1.24610927e-306 4.45064002e-308]]
5、0-1随机矩阵
print(np.random.rand(2, 2))
[[0.19656695 0.29067155] [0.52709383 0.46490215]]
6、范围矩阵
np.random.uniform(low=0.0, high=1.0, size=None)
生出size个符合均分布的浮点数,取值范围为[low, high),默认取值范围为[0, 1.0)
print(np.random.uniform(1, 2,size=(2,3)))
[[1.64545472 1.07505418 1.87356361] [1.98143839 1.6130207 1.80829523]]
三、创建数字序列
np.arange(start,end,step)
序列范围:[start(开始),end(结束))
print(np.arange(2,10,2))
[2 4 6 8]
print(np.arange(3,13,4))
[ 3 7 11]
四、基本运算
同纬度的矩阵才能运算
a = np.arange(4)a
array([0, 1, 2, 3])
b = np.array([4, 5, 6, 7])b
array([4, 5, 6, 7])
a+b
array([ 4, 6, 8, 10])
a-b
array([-4, -4, -4, -4])
a*b
array([ 0, 5, 12, 21])
a/b
array([0. , 0.2 , 0.33333333, 0.42857143])
a**2
array([0, 1, 4, 9], dtype=int32)
五、切片
c = np.arange(10)c
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
c[1:6]
array([1, 2, 3, 4, 5])
c[1:6:2]
array([1, 3, 5])
c[::-1]
array([9, 8, 7, 6, 5, 4, 3, 2, 1, 0])