NumPy

作者:管理员 发布时间:2021-02-01 14:22

    Numpy“男派”是python中的核心科学计算库;我们在数学基础的学习中的全部运算,都要依靠NumPy来负责计算。

    NumPy用于处理大型多维数组和矩阵,并通过大量的高级数学函数和实现方法进行各种操作。在过去一年里NumPy进行了大量改进。除了bug修复和兼容性问题之外,还涉及到样式可能性,即NumPy对象的格式化打印。 

    NumPy几乎是一个无法回避的科学计算工具包,最常用的也许是它的N维数组对象,其他还包括一些成熟的函数库,用于整合C/C++和Fortran代码的工具包,线性代数、傅里叶变换和随机数生成函数等。NumPy提供了两种基本的对象:ndarray(N-dimensional array object)和 ufunc(universal function object)。ndarray是存储单一数据类型的多维数组,而ufunc则是能够对数组进行处理的函数。

    官网:https://numpy.org/



简单教程

Numpy 提供了两个基本的对象:

  • ndarray:存储数据的多维数组
  • ufunc:对数组进行处理的函数。

ndarray 支持一维到三维的数据结构:

Numpy 

 各维度数据的定义:

Numpy  

创建数据

# 导入 numpy 库, 约定俗成别名为 np
import numpy as np

np.array([1, 2, 3])
np.array((1, 2, 3)) # 同上
# array([1, 2, 3])

np.array(((1, 2),(1, 2)))
np.array(([1, 2],[1, 2])) # 同上
# out:
array([[1, 2],
        [1, 2]])

使用函数创建:

np.arange(10) # 10个, 不包括10,步长为 1
np.arange(3, 10, 0.1) # 从 3 开始到时,步长为 0.1
# 从 2.0 开始到 3.0,生成均匀的 5 个值,不包括终终值 3.0
np.linspace(2.0, 3.0, num=5, endpoint=False)
 # 返回一个 6x4 的随机数组,float 型
np.random.randn(6, 4)
# 指定范围指定形状的数组,整型
np.random.randint(3,7,size=(2, 4))
# 创建从0到20随机的5个数组
np.random.randint(0, 20, 5)
# array([ 9, 10, 14,  6, 14])
# 创建值为 0 的数组
np.zeros(6) # 6个浮点 0.
np.zeros((5, 6), dtype=int) # 5 x 6 整型 0
np.ones(4) # 同上
np.empty(4) # 同上
 # 创建一份和目标结构相同的 0 值数组
np.zeros_like(np.arange(6))
np.ones_like(np.arange(6)) # 同上
np.empty_like(np.arange(6)) # 同上
np.arange(4).repeat(4) # 将4个值依次重复四次,共16个


数据类型

np.int64 # 有符号 64 位 int 类型
np.float32 # 标准双精度浮点类型
np.complex # 由128位的浮点数组成的复数类型
np.bool # TRUE 和 FALSE 的 bool 类型
np.object # Python 中的 object 类型
np.string # 固定长度的 string 类型
np.unicode # 固定长度的 unicode 类型

np.NaN # np.float 的子类型
np.nan


数组信息

n.shape() # 数组的形状, 返回值是一个元组
n.shape = (4, 1) # 改变形状
a = n.reshape((2,2)) # 改变原数组的形状创建一个新的
n.dtype # 数据类型
n.ndim # 维度数
n.size # 元素数
np.typeDict # np 所有数据类型


计算

两个数组间的操作总是应用在每个元素上的。

np.array( [10,20,30,40] )[:3] # 支持类似列表的切片
a = np.array( [10,20,30,40] )
b = np.array( [1, 2, 3, 4] )
a+b # array([11, 22, 33, 44]) 矩阵相加
a-1 # array([ 9, 19, 29, 39])
4*np.sin(a)

# 以下举例数学函数,还支持非常多的数据函数
a.max() # 40
a.min() # 10
a.sum() # 100
a.std() # 11.180339887498949
a.all() # True
a.cumsum() # array([ 10,  30,  60, 100])
b.sum(axis=1) # 多维可以指定方向
np.negative(-1) # 1 相反数


逻辑

x = 10
np.where(x>0, 1, 0) # array(1)
np.logical_and(x>0, x>5) # True
np.logical_or(x>0, x<5) # True
np.logical_not(x>5) # False
np.logical_xor(x>5, x==0) # 异或 True


合集

# 输出x和y的交集
np.intersect1d(x,y)
# 输出在x中不在y中的元素
np.setdiff1d(x,y)
# 输出x和y的并集
np.union1d(x,y)
# 输出x和y的异或集
np.setxor1d(x,y)


合并

# 以下方法传入的是一个 *arrays,如 (a1, a2, ...)
np.append() # 追加, 可读性好占内存大
np.stack()
np.dstack()
np.vstack()  # 垂直合并
np.hstack() # 水平合并
np.newaxis() # 转置
np.concatenate() # 针对多个矩阵或序列的合并操作
np.split(ab, 4, axis=0) # 分隔




标签:
更多介绍:
NumPy基础演示
NumPy数组计算
NumPy检索与函数
Copyright © 2020 万物律动 旗下 AI算法狮 京ICP备20010037号-1
本站内容来源于网络开放内容的收集整理,并且仅供学习交流使用;
如有侵权,请联系删除相关内容;