【Python】numpy笔记

numpy简介

什么是numpy

NumPy是Python中科学计算的基础包。它是一个Python库,提供多维数组对象,各种派生对象(如掩码数组和矩阵),以及用于数组快速操作的各种API,有包括数学、逻辑、形状操作、排序、选择、输入输出、离散傅立叶变换、基本线性代数,基本统计运算和随机模拟等等

numpy的应用

NumPy 通常与 SciPy(Scientific Python)和 Matplotlib(绘图库)一起使用, 这种组合广泛用于替代MatLab,是一个强大的科学计算环境,有助于我们通过 Python 学习数据科学或者机器学习

ndarray

numpy的ndarray对象,别名叫做array。需要注意的是,numpy.array≠array.array,后者是python标准库的对象,只能处理一维数组对象且功能较少。

  • ndarray的属性
属性名描述
ndarray.ndimn dimension,即array的维度数,也称作rank
ndarray.shape即数组的维度,返回一个整数元组,如二维数组(m,n)
ndarray.size数组元素的个数,相当于shape元素的成绩
ndarray.dtype描述数组中元素类型的对象
  • 例子
>>> import numpy as np
>>> num=np.array([[1,2,3],[4,5,6]])
>>> num.ndim
2
>>> num.shape
(2, 3)
>>> num.size
6

zeros

用于创建一个0矩阵。

>>> s=np.zeros((5,2))
>>> s
array([[0., 0.],
       [0., 0.],
       [0., 0.],
       [0., 0.],
       [0., 0.]])

ones

类似于zeros,创建的是全1矩阵。

arrange

用于创建一维数组

  • ndarray.arrange(first,end,len),区间为[first,end],步长len。
  • ndarray.arrange(num),创建的数组为0,1,2……num-1。
>>> np.arange(0,5,2)
array([0, 2, 4])
>>> np.arange(5)
array([0, 1, 2, 3, 4])

reshape

用于改变矩阵的维度。

>>> num=num.reshape(2,3)
>>> num
array([[1, 2, 3],
       [4, 5, 6]])
>>> num=num.reshape(6)
>>> num
array([1, 2, 3, 4, 5, 6])

max,min和sum

>>> print(a.dot(b))
[[10 13]
 [28 40]]
>>> print(a)
[[0 1 2]
 [3 4 5]]
>>> a.sum()
15
>>> a.min()
0
>>> a.max()
5

矩阵乘法

array中,*表示元素内的运算,而不是矩阵乘法,乘法用@或dot函数替代

>>> a=np.arange(6).reshape(2,3)
>>> b=np.arange(6).reshape(3,2)
>>> print(a)
[[0 1 2]
 [3 4 5]]
>>> print(2*a)
[[ 0  2  4]
 [ 6  8 10]]
>>> print(a@b)
[[10 13]
 [28 40]]
 >>> print(a.dot(b))
[[10 13]
 [28 40]]

axis参数

指定操作的轴

>>> b
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11]])
>>>
>>> b.sum(axis=0)                            # sum of each column
array([12, 15, 18, 21])
>>>
>>> b.min(axis=1)                            # min of each row
array([0, 4, 8])

转置矩阵

常用的方法是访问array的T属性。

>>> a
array([[0, 1, 2],
       [3, 4, 5]])
>>> a.T
array([[0, 3],
       [1, 4],
       [2, 5]])

单位矩阵

  • 可以用identity或eye
>>> np.identity(2)
array([[1., 0.],
       [0., 1.]])
>>> np.eye(2)
array([[1., 0.],
       [0., 1.]])
  • 也可以采用对角矩阵的diag生成法
>>> np.diag([1]*2)
array([[1, 0],
       [0, 1]])

矩阵堆叠

  • hstack横向堆叠
  • vstack纵向堆叠
>>> a=np.array([0,1,2])
>>> b=np.array([3,4,5])
>>> np.hstack((a,b))
array([0, 1, 2, 3, 4, 5])
>>> np.vstack((a,b))
array([[0, 1, 2],
       [3, 4, 5]])

矩阵分割

把矩阵等分

  • hsplit横向分割
  • vsplit纵向分割

>>> a
array([[0, 1, 2],
       [3, 4, 5]])
>>> np.hsplit(a,3)
[array([[0],
       [3]]), array([[1],
       [4]]), array([[2],
       [5]])]
>>> np.vsplit(a,2)
[array([[0, 1, 2]]), array([[3, 4, 5]])]

linalg

linalg.det

计算矩阵的行列式:numpy.linalg.det(a)

solve

numpy.linalg.solve(a,b)用于求解线性矩阵方程

>>> b=np.array([4]).reshape(1,1)
>>> a=np.array([2]).reshape(1,1)
>>> np.linalg.solve(a,b)
array([[2.]])

inv

numpy.linalg.inv(a)求矩阵的逆

>>> a=([[1,2],[2,1]])
>>> b=np.linalg.inv(a)
>>> a@b
array([[1., 0.],
       [0., 1.]])
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

cout0

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

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

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

打赏作者

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

抵扣说明:

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

余额充值