Numpy —— 科学计算基础库

本文最后更新于:2020年9月21日 晚上

概览:Numpy的使用。

Numpy与ndarray

NumPy(Numerical Python) 是 Python 语言中做科学计算的基础库。重在于数值计算,也是大部分Python科学计算库的基础,多用于在大型、多维数组上执行的数值运算。

NumPy 是 N 维数组对象 ndarray,它是一系列同类型数据的集合,以 0 下标为开始进行集合中元素的索引。

  • ndarray 对象是用于存放同类型元素的多维数组。
  • ndarray 中的每个元素在内存中都有相同存储大小的区域。
  • ndarray 内部由以下内容组成:
    • 一个指向数据(内存或内存映射文件中的一块数据)的指针
    • 数据类型或 dtype,描述在数组中的固定大小值的格子。
    • 一个表示数组形状(shape)的元组,表示各维度大小的元组。
    • 一个跨度元组(stride),其中的整数指的是为了前进到当前维度下一个元素需要”跨过”的字节数。

numpy与python列表的区别

  • numpy数组中只能存放相同类型的数组元素。
  • 并且数据类型优先级:str>float>int
    • eg:一维数组中只要有一个浮点数,所有的数都将是浮点数。

numpy创建

1
import numpy as np
  1. 使用np.array()创建

    1
    2
    arr = np.array([1,2,3,4,5]) # 一维数组
    arr2 = np.array([[1,2,3],[4,5,6]]) # 二维数组
  2. 使用matplotlib将外部图片的数据加载入np数组

    1
    2
    import matplotlib.pyplot as plt
    img_arr = plt.imread('./bobo.jpg')
  3. 使用linespace、random等随机生成

    1
    2
    3
    np.linspace(0,20,num=10) #返回一个一维形式的等差数列,10个数字
    np.arange(0,10,step=2) #返回也是一个等差数列 array([0, 2, 4, 6, 8])
    np.random.randint(0,100,size=(3,4)) #返回一个三行四列二维数组,数组元素是从0-100随机选取

    numpy常用属性

  • shape:数组的形状,二维就是(m,n)
  • ndim:数组维度
  • size:数组元素个数
  • dtype:数组元素的数据类型,上面提到numpy数组只能存放同一类型的数据。

numpy数据类型

  • array(dtype=?):创建时可以设定数据类型

  • arr.dtype = ‘?’:之后可以修改数据类型

reshape变形

可以将x维度的数组变换成y维度的数组,但是变形前和变形后数组的容量不可以发生变化

  • arr.reshape((2,15)) #两行15列的二维数组
  • arr.reshape((3,-1)) #-1表示自行计算,保证3行n列的数组
  • arr.reshape((30,))注意逗号后面没有数字,会变形成为一个一维数组。

concatenate级联

将多个numpy数组进行横向或者纵向的拼接。

1
np.concatenate((arr,arr,arr),axis=1)
  • axis表示轴向,0为列,1为行。
  • 维度不一致,一定不可以级联,但是维度一致,行列不一致也可以适当级联。

索引与切片

1
2
3
4
5
6
7
8
9
10
11
12
13
arr = np.random.randint(0,100,size=(5,6))
arr[2] #单行
arr[[1,2]] # 多行
arr[2,3] # 单值
arr[[1,2],3] #索引取多值,(1,3)与(2,3)

# ---

arr[0:2] #切出前两行
arr[:,0:2] #切出前两列,逗号左边表示行,右边表示列
arr[::-1] #将行倒置
arr[:,::-1] #列倒置
arr[::-1,::-1] #元素倒置

聚合操作、数学函数、统计函数

  • sum(axis=0):按列求和
  • max(axis=0)
  • min(axis=0)
  • mean(axis=0):均值
1
arr.sum(axis=0)
  • sin()、cos()、tan()
  • numpy.around(a,decimals) 函数返回指定数字的四舍五入值。
    • a:np数组
    • decimals: 舍入的小数位数。 默认值为0。 如果为负,整数将四舍五入到小数点左侧的位置。
1
np.sin(3.123)
  • numpy.amin() 和 numpy.amax(),用于计算数组中的元素沿指定轴的最小、最大值
  • numpy.ptp():计算数组中元素最大值与最小值的差(最大值 - 最小值)。
  • numpy.median() 函数用于计算数组 a 中元素的中位数(中值),计算不能有空值。
  • 标准差std():标准差是一组数据平均值分散程度的一种度量。
    公式:std = sqrt(mean((x - x.mean())**2))
    如果数组是 [1,2,3,4],则其平均值为 2.5。 因此,差的平方是 [2.25,0.25,0.25,2.25],并且其平均值的平方根除以 4,即 sqrt(5/4) ,结果为 1.1180339887498949。
  • 方差var():统计中的方差(样本方差)是每个样本值与全体样本值的平均数之差的平方值的平均数,即 mean((x - x.mean())** 2)。换句话说,标准差是方差的平方根。
1
2
np.median(arr[0]) #返回一组数据的中位数
np.std(arr[0])

矩阵相关

NumPy 中包含了一个矩阵库 numpy.matlib,该模块中的函数返回的是一个矩阵,而不是 ndarray 对象。一个 的矩阵是一个由行(row)列(column)元素排列成的矩形阵列。

numpy.matlib.identity() 函数返回给定大小的单位矩阵。单位矩阵是个方阵,从左上角到右下角的对角线(称为主对角线)上的元素均为 1,除此以外全都为 0。

  • 矩阵转置:arr.T
  • 矩阵相乘:numpy.dot(a, b, out=None)

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!