NumPy( Numeric Python)

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

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

numpy的引用

在这里插入图片描述
虽说别名可以省略或者更改,但尽量使用上述约定的别名

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. 描述这些数据的元数据(数据维度、数据类型等)
    在这里插入图片描述

ndarray对象的属性

在这里插入图片描述

数据类型

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
当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
'''

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

adarray数组的变换

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

ndarray数组运算

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

索引与切片

索引:获取数组中特定位置元素的过程
切片:获取数组元素子集的过程
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

随机数函数

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

统计函数

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

梯度函数

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

副本与视图

numpy线性代数

数组与标量之间的运算

在这里插入图片描述

常用numpy.linalg函数总结

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

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

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐