NumPy基础笔记

1. NumPy简介

NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库,包括线性代数、傅里叶变换、随机数生成等功能。

2. NumPy应用

NumPy 通常与 SciPy(Scientific Python算法库)和 Matplotlib(绘图库)一起使用, 这种组合广泛用于替代 MatLab,是一个强大的科学计算环境,有助于我们通过 Python 学习数据科学或者机器学习。

3. NumPy安装

pip install numpy

4. NumPy数组

4.1 创建数组对象

4.1.1数组属性

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

ndarray 对象是用于存放同类型元素的多维数组。

ndarray 中的每个元素在内存中都有相同存储大小的区域。

ndarray 内部由以下内容组成:

        一个指向数据(内存或内存映射文件中的一块数据)的指针。

        数据类型或 dtype,描述在数组中的固定大小值的格子。

        一个表示数组形状(shape)的元组,表示各维度大小的元组。

        一个跨度元组(stride),其中的整数指的是为了前进到当前维度下一个元素需要"跨过"的字节数。

数组属性

属性 说明
ndarray.ndim

秩,即轴的数量或维度的数量

ndarray.shape 数组的维度,对于矩阵,n 行 m 列
ndarray.size 数组元素的总个数,相当于 .shape 中 n*m 的值
ndarray.dtype

ndarray 对象的元素类型

ndarray.itemsize ndarray 对象中每个元素的大小,以字节为单位
ndarray.flags

ndarray 对象的内存信息

ndarray.real 元素的实部
ndarray.imag 元素的虚部
ndarray.data 包含实际数组元素的缓冲区,由于一般通过数组的索引获取元素,所以通常不需要使用这个属性

4.1.2创建数组

①使用底层 ndarray 构造器创建

numpy.array(object, dtype = None, copy = True, order = None, subok = False, ndmin = 0)

参数说明:

名称 描述
object 数组或嵌套的数列
dtype 数组元素的数据类型,可选
copy

对象是否需要复制,可选

order

创建数组的样式,C为行方向,F为列方向,A为任意方向(默认)

subok

默认返回一个与基类类型一致的数组

ndmin

指定生成数组的最小维度

②numpy.empty创建一个指定形状(shape)、数据类型(dtype)且未初始化的数组

numpy.empty(shape, dtype = float, order = 'C')

参数说明:

参数 描述
shape 数组形状
dtype 数据类型,可选
order 有"C"和"F"两个选项,分别代表,行优先和列优先,在计算机内存中的存储元素的顺序。

③numpy.zeros创建指定大小的数组,数组元素以 0 来填充

numpy.zeros(shape, dtype = float, order = 'C')

参数说明:

参数 描述
shape 数组形状
dtype 数据类型,可选
order

'C' 用于 C 的行数组,或者 'F' 用于 FORTRAN 的列数组

④numpy.ones创建指定形状的数组,数组元素以 1 来填充

numpy.ones(shape, dtype = None, order = 'C')

参数说明:

参数 描述
shape 数组形状
dtype 数据类型,可选
order

'C' 用于 C 的行数组,或者 'F' 用于 FORTRAN 的列数组

4.2 转换数据类型

①创建时指定

创建数组时,设置dtype参数

②转换数据类型

numpy.astype() 

4.3索引与切片

ndarray对象的内容可以通过索引或切片来访问和修改,与 Python 中 list 的切片操作一样。

4.3.1索引

ndarray 数组可以基于 0 - n 的下标进行索引

4.3.2切片

①通过内置的 slice 函数,slice( start, stop ,step )

②通过冒号分隔切片参数 start:stop:step

: 的解释:如果只放置一个参数,如 [2],将返回与该索引相对应的单个元素。如果为 [2:],表示从该索引开始以后的所有项都将被提取。如果使用了两个参数,如 [2:7],那么则提取两个索引(不包括停止索引)之间的项。

③省略号 …,来使选择元组的长度与数组的维度相同,如果在行位置使用省略号,它将返回包含行中元素的 ndarray。

多维数组同理,数组名[行,列]

4.4数组的组合

4.4.1水平组合

numpy.hstack (a,b)

numpy.concatenate((a, b), axis=1)

4.4.2垂直组合

numpy.vstack (a,b)

numpy.concatenate((a, b), axis=0)

5. NumPy数学模块

5.1矩阵对象

矩阵库 numpy.matlib,该模块中的函数返回的是一个矩阵,而不是 ndarray 对象。

函数 描述
numpy.transpose() 矩阵转置
numpy.matlib.empty(shape, dtype, order) 一个给定大小的不初始化的矩阵
numpy.matlib.zeros() 一个以 0 填充的矩阵
numpy.matlib.ones() 一个以 1 填充的矩阵
numpy.matlib.eye(n, M,k, dtype)

一个矩阵,对角线元素为 1,其他位置为零

numpy.matlib.identity() 一个给定大小的单位矩阵
numpy.matlib.rand() 一个给定大小的矩阵,数据是随机填充的

5.2线性代数

提供了线性代数函数库 linalg

函数 描述
dot 两个数组的点积,即元素对应相乘。
vdot 两个向量的点积
inner 两个数组的内积
matmul 两个数组的矩阵积
determinant 数组的行列式
solve 求解线性矩阵方程
inv 计算矩阵的乘法逆矩阵

5.3随机函数

函数 描述
random.rand(d0, d1, ..., dn) 产生[0, 1)范围的浮点随机数
random.random_sample(size) 产生[0, 1)范围的浮点随机数
random.randn(d0, d1, ..., dn) 产生标准正太分布(normal)分布的随机数
random.normal(loc = 0.0, scale = 1.0, size = None)

产生正态分布随机数​

random.uniform(low = 0.0, high = 1.0, size = None)

产生均匀分布随机数​

你可能感兴趣的:(numpy,python,数据分析)