Python Numpy


Python Numpy

pFBcC0U.png

1. numpy简单介绍

  • Numpy(Numerical Python)是一个开源的Python科学计算库,用于快速处理任意维度的数组。

  • Numpy支持常见的数组和矩阵操作。对于同样的数值计算任务,使用Numpy比直接使用Python要简洁的多。

  • Numpy使用ndarray对象来处理多维数组,该对象是一个快速而灵活的大数据容器。

numpy是个第三方库,需要先安装,打开命令行终端输入指令“pip install numpy”此限制。


2. ndarray

  • ndarray是numpy 给我们提供的一个特殊的数组对象,我们可以用ndarray表示普通的一维数组或者二维的矩阵,甚至任意维的数据。

  • 并且它可以对数组中的数据进行非常高效的运算,比如用作数据统计、图像处理、线性代数、傅里叶变换等等。

  • numpy的所有数据都是围绕数组进行的,所以我们首先需要将计算的数据表示成数组的形式。

    首先需要导入numpy这个库。

import numpy as np

2.1 ndarray的一些属性

属性名字属性解释
ndarray.shape数组维度的元组
ndarray.ndim数组维数
ndarray.size数组中元素的数量
ndarray.itemsize一个数组元素的长度(字节)
ndarray.dtype数组元素的类型

2.2 创建数组

  • np.array() 直接创建
a = np.array([[1,2,3],[4,5,6]])
a
array([[1, 2, 3],
       [4, 5, 6]])
a.shape
(2, 3)
a.ndim
2
a.size
6
a.dtype
dtype('int32')

3. 数组的初始化

3.1 生成0数组和1数组

  • np.ones()
  • np.zeros()
a = np.ones([5])
a
array([1., 1., 1., 1., 1.])
a = np.ones([4,6])
a
array([[1., 1., 1., 1., 1., 1.],
       [1., 1., 1., 1., 1., 1.],
       [1., 1., 1., 1., 1., 1.],
       [1., 1., 1., 1., 1., 1.]])
a = np.zeros([5])
a
array([0., 0., 0., 0., 0.])

3.2 从现有数组生成

3.2.1 生成方式
  • np.array(object,dype)
  • np.asarray(object,dtype)
3.2.2 关于array和asarray的不同
a = np.array([[1,2,3],[4,5,6]])
a1 = np.array(a)
a2 = np.asarray(a)
a
array([[1, 2, 3],
       [4, 5, 6]])
a1
array([[1, 2, 3],
       [4, 5, 6]])
a2
array([[1, 2, 3],
       [4, 5, 6]])
a[1,1] = 500
a
array([[  1,   2,   3],
       [  4, 500,   6]])
a1
array([[1, 2, 3],
       [4, 5, 6]])
a2
array([[  1,   2,   3],
       [  4, 500,   6]])
a2[0,0] = 100
a2
array([[100,   2,   3],
       [  4, 500,   6]])
a
array([[100,   2,   3],
       [  4, 500,   6]])

3.3 生成规律分布的数组

  • np.arange(start,stop, step, dtype) //指定步长的等差数组
    • start:序列的起始值,默认为0
    • stop:序列的终止值
    • step:步长,默认值为1
  • np.linspace (start, stop, num, endpoint) //指定数量的等差数组
    • start:序列的起始值,默认为0
    • stop:序列的终止值
    • num:要生成的等间隔样例数量,默认为50
    • endpoint:序列中是否包含stop值,默认为ture
  • np.logspace(start,stop, num) //指定数量的等比数列
a = np.arange(0,10,2)
a
array([0, 2, 4, 6, 8])
a = np.linspace(0,10,11)
a
array([ 0.,  1.,  2.,  3.,  4.,  5.,  6.,  7.,  8.,  9., 10.])

3.4 生成随机数组

np.random模块

  • np.random.randint(low, high, size)

    生成一个指定范围内的整数

  • numpy.random.uniform(low,high,size)

    从一个均匀分布的范围[low,high)中随机采样(含低不含高)

import numpy as np
a = np.random.randint(40,100,(4,5))
a
array([[93, 63, 97, 55, 67],
       [70, 84, 89, 95, 45],
       [85, 85, 65, 67, 64],
       [47, 83, 85, 53, 72]])

4. ndarray运算

4.1 数组与数的计算

  • 数组的加减乘除(在numpy中称为广播)
a = np.array([1,2,3])
a = a + 1
a
array([2, 3, 4])
a = a - 1
a
array([1, 2, 3])
a =  a * 2
a
array([2, 4, 6])
a = a / 2
a
array([1., 2., 3.])

4.2 数组与数组的计算

  • 数组间的加减乘除
a = np.array([1,2,3])
b = np.array([4,5,6])
a
array([1, 2, 3])
b
array([4, 5, 6])
c = a + b
c
array([5, 7, 9])
c = b - a
c
array([3, 3, 3])
c = a * b
c
array([ 4, 10, 18])
c = b / a
c
array([4. , 2.5, 2. ])

4.3 特殊运算

  • adarray.min() //返回最小元素
  • adarray.max() //返回最大元素
  • adarray.argmin() //返回最小元素所在的索引
  • adarray.argmax() //返回最大元素所在的索引
  • adarray.sum() //返回所有元素的总和
  • adarray.mean() //返回所有元素的平均值
  • adarray.median() //返回所有元素的中位数
  • adarray.var() //返回数据方差
  • adarray.std() //返回数据的标准方差

4.4 高级运算

  • np.sqrt() //求平方根
  • np.sin() //正弦
  • np.cos() //余弦
  • np.log() //对数
  • np.power() //指数

4.5 元素筛选

a = np.arange(10)
a
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
a[a>2]
array([3, 4, 5, 6, 7, 8, 9])

5. 矩阵

5.1 矩阵和向量

5.1.1 矩阵

矩阵,英文matrix,和array的区别在于矩阵必须是二维的,但是array可以是多维的

5.1.2 向量

向量,英文vector,是一种特殊的矩阵,通常是一维表示,矩阵里的一行或者一列独立出来就可以称为一个向量。

5.2 矩阵乘法

  • np.matmul
  • np.dot

二者都是矩阵乘法。np.matmul中禁止矩阵与标量的乘法。在矢量乘矢量的内积运算中,np.matmul与np.dot没有区别。

a = np.array([[1,2],[1,2]])
b = np.array([[3,4],[3,4]])
a
array([[1, 2],
       [1, 2]])
b
array([[3, 4],
       [3, 4]])
c = np.matmul(a,b)
c
array([[ 9, 12],
       [ 9, 12]])
c = np.dot(a,b)
c
array([[ 9, 12],
       [ 9, 12]])
c = np.matmul(a,2)
---------------------------------------------------------------------------

ValueError                                Traceback (most recent call last)

Cell In[46], line 1
----> 1 c = np.matmul(a,2)


ValueError: matmul: Input operand 1 does not have enough dimensions (has 0, gufunc core with signature (n?,k),(k,m?)->(n?,m?) requires 1)
c = np.dot(a,2)
c
array([[2, 4],
       [2, 4]])

6. ndarray的特殊索引

  • 切片索引
    列表切片是从原始列表中提取列表的一部分的过程。在列表切片中,我们将根据所需内容(如,从何处开始,结束以及增量进行切片)剪切列表。Python中符合序列的有序序列都支持切片(slice),例如列表,字符串,元组。

规则:

  • 存储对象 [ start : end : step ]

    • start:: 起始索步长为正时,从首部开始;步长为负时,从尾部开始。

    • end:结束索引,步长为正时,从尾部开始;步长为负时,从首部开始。

    • step:表示步长,默认为1。步长为正时,从首部开始取值;步长为负时,从尾部开始取值。

a = np.arange(12)
a
array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11])
a = a.reshape(3,4)
a
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11]])
b = a[[0,2],[1,2]]
b
array([ 1, 10])
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值