编辑
目录
一、NumPy的ndarray:一种多维数组对象:
编辑
NuPy(Numerical Python)是科学计算基础库,提供大量科学计算相关功能,比如数据统计,随机数生成等。
其提供最核心类型为多维数组类型(ndarray),支持大量的维度数组与矩阵运算,NumPy支持向量处理ndarray对象,提高程序运算速度。
NumPy最重要的一个特点就是N维数组对象(ndarray),该对象是一个快速而灵活的大数据集容器。ndarray是一个通用的同构数据的多维容器,也就是说,ndarray中的所有元素必须是相同类型的数据。
每个数据都有一个shap属性,定义了该ndarray的维度大小;一个dtype属性,定义了该ndarray的元素类型。
1.NumPy安装:
使用Anaconda Prompt或者CMD命令窗口进行安装:
pip install numpy
2.检测安装是否成功:
import numpy as np a = np.arange(10) print(a) # type():返回当前参数的数据类型: print(type(a))
编辑
二、数组创建:
1.array创建:
numpy模块的array函数可以生成多维数组。例如,如果要生成一个二维数组,需要向array函数传递一个列表类型的参数。每一个列表元素是一维的ndarray类型数组,作为二维数组的行。
另外,通过ndarray类的shape属性可以获得数组每一维的元素个数(元组形式),也可以通过shape[n] 形式获得每一维的元素个数,其中n是维度,从0开始。
import numpy as np a = np.array([1, 2, 3, 4], dtype=float, ndmin=3) print(a) print(type(a))
# NumPy中的ndarray对象: # 导入NumPy模块 import numpy as np # 定义一个NumPy的ndarray对象 data = np.array([[1, 2, 3, 4], [5, 6, 7, 8]], np.int32) # 输出ndarray数组中元素数据类型 print(data.dtype) # 输出ndarray对象结构 print(data.shape)
参数说明:
- dtype:设置创建numpy数组的数据类型
- ndmin:设置创建numpy数组的维度
range的使用:
range范围遵守左闭右开原则,包含start元素,不包含stop元素!
range(start, stop, step)
arange创建数组:
arange(start, stop, step, dtype)
编辑
2.随机数创建:
numpy.random.random(size = None):该方法返回 [ 0.0,1.0)范围的随机数。size指定数组形状(元素个数)。
import numpy as np a = np.random.random(size=10) print(a) print(type(a))
编辑
import numpy as np # 创建一个二维数组: a = np.random.random(size=(2, 2)) print(a) print(type(a))
编辑
随机整数:
np.random.randint(low, hight=None, size=None, dtype="1")
dtype的使用:
import numpy as np # 使用dtype指定数据类型,np包含许多的数组类型 a = np.random.randint(0, 10, size=(2, 3), dtype=np.int64) print(a) # dtype属性:当前数组中的元素值类型 print(a.dtype)
编辑
3.创建正态分布数组:
randn函数返回一个或一组样本,具有标准正态分布(期望为0,方差为1)。dn表格每个维度。返回值为指定维度的array
np.random.randn(d0, d1, d2, ... ,dn)
import numpy as np # 创建标准的正态分布: a = np.random.randn(2, 3, 4) print(a)
编辑
创建指定期望和方差的正太分布:
import numpy as np # normal:创建指定期望和方差的正态分布;默认期望:loc=0.0;方差scale=1.0 a = np.random.normal(0, 1, size=4) print(a)
编辑
三、ndarray对象:
NumPy最重要的一个特点是其N维数组对象 ndarray,它是一系列同类型数据的集合,以0下标为开始进行集合中元素的索引。
ndarray对象是用于存放同类型元素的多维数组。
ndarray中的每个元素在内存中都有相同存储大小的区域
ndarray内部由以下内容组成:
- 一个指向数据(内存或内存映射文件中的一块数据)的指针
- 数据类型或dtype,描述在数组中的固定大小值的格子。
- 一个表示数组形状(shape)的元组,表示各维度大小的元组
NumPy的数组中比较重要ndarray对象属性有:
编辑
创建ndarray数组的其他方式:
ndarray数组除了可以使用底层的ndarray构造函数来创建以外,也可以通过以下几种方式创建。
1.zeros:
zeros创建指定大小的数组,数组元素以0来填充:
numpy.zeros(shape, dtype, order="C")
import numpy as np # 创建以0填充的数组: a = np.zeros(shape=(2, 3), dtype=float, order="C") print(a)
编辑
2.ones:
numpy.ones:创建指定形状的数组,数组元素以1来填充:
numpy.ones(shape, dtype, order="C")
import numpy as np # 创建以1填充的数组: a = np.ones(shape=(2, 3), dtype=float, order="C") print(a)
编辑
3.empty:
numpy.empty方法用来创建一个指定形状(shape)、数据类型(dtype)且初始化的数组,里面的元素的值是之前内存的值:
numpy.empty(shape, dtype, order="C")
编辑
4.linspace:
linspace函数用户创建一个一维数组,数组是一个等差数列构成的:
numpy.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)
编辑
- endpoint:是否包含结束数值
- retstep:是否显示生成的数组中间显示间距
5.logspace:
numpy.logspace函数用于创建一个等比数列:
numpy.logspace(start, stop, endpoint, base, dtype=None)
编辑
四、切片和索引:
ndarray对象的内容可以通过索引或者切片来访问和修改,与Python中list的切片操作一样。
ndarray数组可以基于0-n的下标进行索引,并设置start,stop以及step参数进行,从原数组中割出一个新数组。
[start:stop:step]
修改一维数组的形状:
array.reshap((数组格式))
import numpy as np a = np.arange(1, 11) # 修改数组形状: a = a.reshape((5, 2)) print(a)
编辑
数组的复制:
所有切片取出来的数组,即使把他赋值给了新变量,他仍然拥有全部原来数组的视图。(切片是地址赋值,不是值传递,修改了切片数组中元素值,会影响原来数组)
使用copy函数实现,值传递:
numpy.copy(原数组)
五、数组的相关操作:
1.改变数组得到维度:
处理数组的一项重要工作就是改变数组的维度,包含提高数组的维度和降低数组的维度,还包括数组的转置。NumPy提供的大量API可以很轻松地完成这些数组的操作。
例如,通过reshape方法可以将一维数组变成二维、三维或者多维数组。
通过ravel方法或flatten方法可以将多维数组变成一维数组。改变数组的维度还可以直接设置NumPy数组的shape属性(元组类型),通过resize方法也可以改变数组的维度。
转化前后,数组的元素个数要一致!
2.数组的拼接:
编辑
水平方向拼接:
通过hstack函数可以将两个或者多个数组水平组合起来形成一个数组,那么什么叫做数组的水平组合。现在有两个2*3的数组A和B:
编辑
使用hstack函数将两个数组水平组合的代码如下:
numpy.hstack([A, B])
编辑
最后,数组A和数组B在水平方向首尾连接起来,形成了一个新数组。
垂直方向拼接:
使用vstack函数,可以将多个数组进行垂直方向拼接:
numpy.vstack((A, B))
concatenate连接数组:
numpy.concatenate((a1, a2, a3, ... ), axis)
参数说明:
- a1,a2,......:相同类型的数组
- axis:沿着它连接数组的轴,默认为0
3.数组的分割:
numpy.spit函数沿着特定的轴将数组分割为子数组:
numpy.split(ary, indices_or_sections, axis)
参数说明:
- ary:被分割的数组
- indices_or_sections:如果是一个整数,就用数平分切分,如果是一个数组,为沿轴切分的位置。
- axis:沿着哪个维度进行切向,默认为0,横向切分。为1时纵向切分。
4.数组的转置:
使用transpose进行数组的转置操作:
numpy.transpose()
NumPy函数:
算数函【Python】NumPy数组和矢量计算数:
如果参与运算的两个对象都是ndarray,并且形状相同,那么会对位彼此之间进行(+
- * / )运算。Numpy算术函数包含简单的加减乘除:add(),subtract(),multiply()和divide()。
统计函数:
统计函数,用于从数组中查找最小元素,最大元素,百分位标准差和方差等:
编辑
编辑