python numpy库

文章目录

    • NumPy( Numeric Python)
    • numpy的引用
    • Ndarray
      • 引入n维数组的意义
      • ndarray的组成
      • ndarray对象的属性
    • 数据类型
      • ndarray支持多种数据类型的原因
      • ndarray数组的创建
      • adarray数组的变换
      • ndarray数组运算
    • 索引与切片
    • 随机数函数
    • 统计函数
    • 梯度函数
    • 副本与视图
    • numpy线性代数
      • 数组与标量之间的运算
      • 常用numpy.linalg函数总结

NumPy( Numeric Python)

numpy是一个开源的python科学计算扩展库,主要用来处理任意维度数组和矩阵
相同的任务,使用numpy比直接用python的基本数据结构更加简单高效。
它的功能:

  1. 包含一个强大的N维数组对象Ndarray
  2. 广播功能函数
  3. 整合C/C++代码的工具
  4. 线性代数、傅里叶变换、随机数生成等功能
    numpy是scipy,pandas等数据处理或科学计算库的基础

numpy的引用

python numpy库_第1张图片
虽说别名可以省略或者更改,但尽量使用上述约定的别名

Ndarray

n维数组,它是一个相同数据类型的集合,以0为下标开始进行集合中元素的索引。
我们知道,python有列表和数组此类的数据结构。
列表:数据类型可以不同(如[3, 2.4 ,‘a’ ,“abc”]),数据是有序的
数组:数据类型相同(如[1,2,3,4])
集合:(如{2,4,3,5,7})数据是无序的

引入n维数组的意义

观察下列两组操作,其功能都是一样的。

import numpy as np

def pysum():
    a = [1, 2, 3, 4]
    b = [5, 6, 7, 8]
    c = []
    for i in range(len(a)):
        c.append(a[i]**2+b[i]**3)
    return c

def numpysum():
    a = np.array([1, 2, 3, 4])
    b = np.array([5, 6, 7, 8])
    c = a**2+b**3
    return c

print("使用列表运算的结果是:", pysum())
print("使用Numpy运算的结果是:", numpysum())
'''
运行结果:
使用列表运算的结果是: [126, 220, 352, 528]
使用Numpy运算的结果是: [126 220 352 528]
'''

但是很明显:

  1. numpy的数组对象可以去掉元素建运算所需要的循环,使一维向量更像单个数据
  2. numpy通过设立专门的数组对象,经过优化,运算速度也相应提升
    通常情况下,在科学运算中,一个维度所有数据的类型往往相同,这时,使用数组对象采用相同的数据类型,有助于节省运算时间和存储空间

ndarray的组成

  1. 实际的数据
  2. 描述这些数据的元数据(数据维度、数据类型等)
    python numpy库_第2张图片

ndarray对象的属性

python numpy库_第3张图片

数据类型

python numpy库_第4张图片
python numpy库_第5张图片
python numpy库_第6张图片
当np.array()不指定dtype时,numpy将根据数据情况关联一个dtype类型

ndarray支持多种数据类型的原因

  1. python基本语法只支持整数、浮点数和复数3种类型
  2. 科学计算涉及数据较多,对存储和性能都有较高要求
  3. 对元素类型精细定义,有助于numpy合理使用存储空间并优化性能
  4. 对元素类型精细定义,有助于程序员对程序规模有合理评估

ndarray数组的创建

import numpy as np
x = np.array([[1, 0], [2, 0], [3, 1]], np.int32)
print(x)
print(x.dtype)
'''
程序输出:
[[1 0]
 [2 0]
 [3 1]]
int32
'''

python numpy库_第7张图片
python numpy库_第8张图片
python numpy库_第9张图片
python numpy库_第10张图片

adarray数组的变换

python numpy库_第11张图片
python numpy库_第12张图片
python numpy库_第13张图片

ndarray数组运算

python numpy库_第14张图片
python numpy库_第15张图片
python numpy库_第16张图片
python numpy库_第17张图片
python numpy库_第18张图片

索引与切片

索引:获取数组中特定位置元素的过程
切片:获取数组元素子集的过程
python numpy库_第19张图片
python numpy库_第20张图片
python numpy库_第21张图片

随机数函数

python numpy库_第22张图片
python numpy库_第23张图片
python numpy库_第24张图片
python numpy库_第25张图片
python numpy库_第26张图片
python numpy库_第27张图片
python numpy库_第28张图片

统计函数

python numpy库_第29张图片
python numpy库_第30张图片
python numpy库_第31张图片
python numpy库_第32张图片
python numpy库_第33张图片

梯度函数

python numpy库_第34张图片
python numpy库_第35张图片
python numpy库_第36张图片

副本与视图

numpy线性代数

数组与标量之间的运算

python numpy库_第37张图片

常用numpy.linalg函数总结

函数 功能
diag 以一维数组的形式返回方阵的对角线元素,或将一维数组转换维方阵
dot 矩阵乘法
trace 计算对角线元素的和
det 计算矩阵行列式
eig 计算方阵的本征值和本征向量
inv 计算方阵的逆
svd 计算奇异值分解
solve 解线性方程组Ax=b,其中A为方阵
lstsq 计算Ax=b的最小二乘解

(好家伙,numpy内置函数太多了…)

你可能感兴趣的:(Python,python,线性代数,开发语言,机器学习)