Numpy

Python的Numpy

NumPy系统是Python的一种开源的数值计算扩展。这种工具可用来存储和处理大型矩阵,比Python自身的嵌套列表(nested list structure)结构要高效的多(该结构也可以用来表示矩阵(matrix))

一个用python实现的科学计算库,包括:
1、一个强大的N维数组对象Array;
2、比较成熟的(广播)函数库;
3、用于整合C/C++和Fortran代码的工具包;
4、实用的线性代数、傅里叶变换和随机数生成函数。numpy和稀疏矩阵运算包scipy配合使用更加方便。

NumPy(Numeric Python)提供了许多高级的数值编程工具,如:矩阵数据类型、矢量处理,以及精密的运算库。专为进行严格的数字处理而产生。多为很多大型金融公司使用,以及核心的科学计算组织如:Lawrence Livermore,NASA用其处理一些本来使用C++,Fortran或Matlab等所做的任务。

常见运算:

生成单位矩阵

# np.identity(n)可以生成n×n的单位矩阵

>>> np.identity(4)
array([[ 1.,  0.,  0.,  0.],
       [ 0.,  1.,  0.,  0.],
       [ 0.,  0.,  1.,  0.],
       [ 0.,  0.,  0.,  1.]])

# 或者也可以用np.diag生成对角阵

>>> np.diag([1] * 4)
array([[1, 0, 0, 0],
       [0, 1, 0, 0],
       [0, 0, 1, 0],
       [0, 0, 0, 1]])

# 最省事的是numpy.eye了,比numpy.identity还少打了几个字母,哈哈

np.eye(3)
array([[1., 0., 0.],
       [0., 1., 0.],
       [0., 0., 1.]])

初始化数组的10种方法

# 1、创建一个长度为10的数组,数组的值都是0
np.zeros(10,dtype=int)

# 2、创建一个3x5的浮点型数组,数组的值都是1
np.ones((3,5),dtype=float)

# 3、创建一个3x5的浮点型数组,数组的值都是3.14
np.full((3,5),3.14)

# 4、创建一个3x5的浮点型数组,数组的值是一个线性序列,从o开始,到20结束,步长为2,(它和内置的range()函数类似
np.arange(0,20, 2)

# 5、创建一个5个元素的数组,这5个数均匀的分配到0~1
np.linespace(0, 1, 5)

# 6、创建一个3x3的,在0~1均匀分配的随机数组成的数组
np.random.random(3,3))

# 7、创建一个3x3的,均值为0,方差为1,正太分布的随即数数组
np.random.normal(0,1,(3,3))

#8、创建一个3x3的,[0,10]区间的随机整形数组
np.random.randint(0,10,(3,3))

#9、创建一个3x3的单位矩阵
np.eye(3)

#10、创建一个由3个整形数组组成的未初始化的数组,数组的值是内存空间中的任意值
np.empty(3)

三目运算符

# 如果a>b的结果为真,h="变量1",如果为假,h="变量2"
a = 1
b = 2
h = ""
h = "变量1" if a>b else "变量2"
print(h)

矩阵乘法

矩阵三种乘法

  • 默认a*b就是对应元素的乘积
  • multiply(a,b)也是对应元素的乘积
  • dot(a,b)会转化为矩阵的乘积
import numpy
a = numpy.array([[1,2],
                 [3,4]])
b = numpy.array([[5,6],
                 [7,8]])

a*b
>>>array([[ 5, 12],
          [21, 32]])

np.multiply(a, b)   # 相当于 m * n

>>>array([[ 5, 12],
          [21, 32]])

a.dot(b)
>>>array([[19, 22],
          [43, 50]])

numpy.dot(b,a)
>>>array([[23, 34],
          [31, 46]])

矩阵转置、逆

# 转置
matrix.T
# 逆
matrix.I

矩阵|数组的迹

>>> #数组的迹
>>> d
array([[1, 2],
       [3, 4]])
>>> f
array([[-2. ,  1. ],
       [ 1.5, -0.5]])
>>> np.trace(d)
5
>>> np.trace(f)
-2.4999999999999996
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值