NumPy 数组包含同一类型的值,支持的数据类型比 Python 内置的类型更多,构建一个数组时,可以用一个字符串参数 dtype 来指定数据类型:
np.zeros(10, dtype='int16')
np.zeros(10, dtype=np.int16)
数据类型 | 描述 |
---|---|
bool_ | 布尔值(True 或者 False),用一个字节存储 |
int_ | 默认的整型(类似于 C 语言中的 long,通常情况下是 int32 或 int64) |
intc | 同 C 语言的 int 相同(通常是 int32 或 int64) |
intp | 用作索引的整型(和 C 语言的 ssize_t 相同,通常情况下是 int32 或 int64) |
int8 | 字节(byte,范围从 –128 到 127),可用 i1 缩写代替 |
int16 | 整型(范围从 –32768 到 32767),可用 i2 缩写代替 |
int32 | 整型(范围从 –2147483648 到 2147483647),可用 i4 缩写代替 |
int64 | 整型(范围从 –9223372036854775808 到 9223372036854775807),可用 i8 缩写代替 |
uint8 | 无符号整型(范围从 0 到 255) |
uint16 | 无符号整型(范围从 0 到 65535) |
uint32 | 无符号整型(范围从 0 到 4294967295) |
uint64 | 无符号整型(范围从 0 到 18446744073709551615) |
float_ | float64 的简化形式 |
float16 | 半精度浮点型,包括:1 比特位符号,5 比特位指数,10 比特位尾数 |
float32 | 单精度浮点型,包括:1 比特位符号,8 比特位指数,23 比特位尾数 |
float64 | 双精度浮点型,包括:1 比特位符号,11 比特位指数,52 比特位尾数 |
complex_ | complex128 的简化形式 |
complex64 | 复数,表示双 32 位浮点数(实数部分和虚数部分) |
complex128 | 复数,表示双 64 位浮点数(实数部分和虚数部分) |
方法 | 描述 |
---|---|
numpy.array() | 将输入数据(列表、元组、Ndarray 等)转换为数组形式当数据源为 Ndarray 时,该方法仍然会 copy 出一个副本,占用新的内存 |
numpy.asarray() | 将输入数据(列表、元组、Ndarray 等)转换为数组形式当数据源为 Ndarray 时,该方法不会 copy 出一个副本,不占用新的内存 |
numpy.arange() | 创建一个一维数组,该数组由一个等差数列构成通过指定开始值、终值和步长创建等差数列,得到的结果数组不包含终值 |
numpy.linspace() | 创建一个一维数组,该数组由一个等差数列构成通过指定开始值、终值和元素个数创建等差数列,可通过 endpoint 参数指定是否包含终值 |
numpy.logspace() | 创建一个一维数组,该数组由一个等比数列构成 |
numpy.empty() | 创建一个指定形状、数据类型且未初始化的数组 |
numpy.zeros() | 创建一个指定大小的数组,数组元素以 0 来填充 |
numpy.ones() | 创建一个指定大小的数组,数组元素以 1 来填充 |
numpy.eye() | 创建一个对角矩阵数组,返回一个二维数组,对角线上值为 1,其余位置为 0 |
numpy.frombuffer() | 将缓冲区解释为一维数组,接受 buffer 输入参数,以流的形式读入并转化成 Ndarray 对象 |
numpy.fromiter() | 从可迭代对象中建立 Ndarray 对象,返回一个一维数组 |
numpy.full((2,3),5) | 创建一个shape为(2,3)的所有值为5的矩阵,可自己指定shape和值 |
numpy.ones_like(array1) | 创建形状为array1的全为1的矩阵 |
numpy.zeros_like(array1) | 创建形状为array1的全为0的矩阵 |
numpy.full_like(array1,6) | 创建形状为array1的全为6的矩阵 |
调用 NumPy 的 array 方法即可创建一个 Ndarray 对象,即创建一个数组。
基本语法:numpy.array(object, dtype = None, copy = True, order = None, subok = False, ndmin = 0)
参数 | 描述 |
---|---|
object | 数组或嵌套的数列 |
dtype | 数组元素的数据类型,可选 |
copy | 对象是否需要复制,可选 |
order | 创建数组的样式,C为行方向,F为列方向,A为任意方向(默认) |
subok | 默认返回一个与基类类型一致的数组 |
ndmin | 指定生成数组的最小维度 |
numpy.asarray() 方法将输入数据(列表、元组、Ndarray 等)转换为数组形式,与 numpy.array() 方法类似,但 asarray 参数比 array 少两个,另外最大的区别是当数据源为 Ndarray 时,array 方法仍然会 copy 出一个副本,占用新的内存,但 asarray 方法不会。
基本语法:numpy.asarray(a, dtype=None, order=None)
参数解释:
参数 | 描述 |
---|---|
a | 待转换对象,可以是列表,元组,列表元组,元组列表,多维数组等 |
dtype | 可选项,指定数据类型 |
order | 可选项,以行优先(C)或列优先(F)的顺序存储多维数据在内存中 |
numpy.arange() 方法用于创建一个一维数组,在指定的间隔内返回均匀间隔的数字并组成数组(Ndarray 对象),即该数组是一个等差数列构成的。arange() 类似 Python 的 range(),但是 arange() 的步长可以为小数,而 range() 的步长只能是整数。
基本语法:numpy.arange([start, ]stop, [step, ]dtype=None)
参数解释:
参数 | 描述 |
---|---|
start | 起始值,数字,可选项,默认起始值为 0,生成的元素包括起始值 |
stop | 结束值,数字,生成的元素不包括结束值 |
step | 步长,数字,可选项, 默认步长为 1,如果指定了 step,则必须给出 start |
dtype | 输出数组的类型,如果未给出 dtype,则从其他输入参数推断数据类型 |
numpy.linspace() 方法用于创建一个一维数组,在指定的间隔内返回均匀间隔的数字并组成数组(Ndarray 对象),即该数组是一个等差数列构成的。linspace() 方法类似于 arange(),两者除了参数有差别以外,还有以下的区别:
arange() 方法类似于内置函数 range(),通过指定开始值、终值和步长创建表示等差数列的一维数组,得到的结果数组不包含终值。
linspace() 通过指定开始值、终值和元素个数创建表示等差数列的一维数组,可以通过 endpoint 参数指定是否包含终值,默认值为True,即包含终值。
基本语法:numpy.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None, axis=0)
参数解释:
参数 | 描述 |
---|---|
start | 序列的起始值 |
stop | 序列的终止值,如果 endpoint 为 True,则该值将包含于数列中 |
num | 可选项,int 类型,要生成的等步长的样本数量,即元素个数,默认为 50 |
endpoint | 可选项,bool 类型,该值为 True 时,数列中将包含 stop 值,反之则不包含,默认为 True |
retstep | 可选项,bool 类型,该值为 True 时,生成的数组中会显示间距,反之则不显示,默认为 False |
dtype | 可选项,Ndarray 的数据类型 |
axis | 可选项,int 类型,结果中的轴用于存储样本。仅当 start 或 stop 类似于数组时才相关默认情况下为 0,采样将沿着在开始处插入的新轴进行,使用 -1 来获得轴的末端 |
numpy.logspace() 方法用于创建一个一维数组,该数组由一个等比数列构成。
基本语法:numpy.logspace(start, stop, num=50, endpoint=True, base=10.0, dtype=None, axis=0)
参数解释:
参数 | 描述 |
---|---|
start | 序列的起始值 |
stop | 序列的终止值,如果 endpoint 为 True,则该值将包含于数列中 |
num | 可选项,int 类型,要生成的等步长的样本数量,即元素个数,默认为 50 |
endpoint | 可选项,bool 类型,该值为 True 时,数列中将包含 stop 值,反之则不包含,默认为 True |
base | 可选项,float 类型,对数 log 的底数,即取对数的时候 log 的下标 ,默认为 10.0 |
dtype | 可选项,Ndarray 的数据类型 |
axis | 可选项,int 类型,结果中的轴用于存储样本。仅当 start 或 stop 类似于数组时才相关默认情况下为 0,采样将沿着在开始处插入的新轴进行,使用 -1 来获得轴的末端 |
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)或列优先(F)的顺序存储多维数据在内存中 |
numpy.ones() 方法用于创建指定大小的数组,数组元素以 1 来填充。
基本语法:numpy.ones(shape, dtype = None, order = ‘C’)
参数解释:
参数 | 描述 |
---|---|
shape | 数组形状 |
dtype | 数据类型,可选 |
order | 以行优先(C)或列优先(F)的顺序存储多维数据在内存中 |
numpy.eye() 方法用于创建对角矩阵数组,返回一个二维数组,对角线上值为 1,其余位置为 0。
基本语法:numpy.eye(N, M=None, k=0, dtype=
参数解释:
参数 | 描述 |
---|---|
N | int 类型,目标数组的行数 |
M | int 类型,可选项,目标数组的列数,如果未指定,则默认与行数(N)相同 |
k | int 类型,可选项,对角线索引,0(默认值)为主对角线,正值为上对角线,负值为下对角线简单来说可以理解成将值为 1 的对角线向左右平移 k 个单位,默认值 0 即对角线为 1,k 为正值右移,负值左移 |
dtype | 可选项,返回数组的数据类型 |
order | 可选项,以行优先(C)或列优先(F)的顺序存储多维数据在内存中 |
numpy.frombuffer() 方法将缓冲区解释为一维数组,接受 buffer 输入参数,以流的形式读入转化成 ndarray 对象。当 buffer 是字符串时,Python3 默认 str 是 Unicode 类型,所以要转成 bytestring,即在原 str 前加上 b。
基本语法:numpy.frombuffer(buffer, dtype=float, count=-1, offset=0)
参数解释:
参数 | 描述 |
---|---|
buffer | 可以是任意对象,会以流的形式读入 |
dtype | 可选项,返回数组的数据类型 |
count | 可选项,读取的数据数量,默认为 -1,即读取缓冲区中所有数据 |
offset | 可选项,读取的起始位置,以字节为单位,默认为 0 |
numpy.fromiter() 方法可以从可迭代对象中建立 Ndarray 对象,返回一个一维数组。
基本语法:numpy.fromiter(iterable, dtype, count=-1)
参数解释:
参数 | 描述 |
---|---|
iterable | 可迭代对象 |
dtype | 返回数组的数据类型 |
count | 读取的数据数量,默认为 -1,即读取所有数据 |
numpy.reshape() 方法用于重新调整数组的维数(重塑)。
基本语法:numpy.reshape(a, newshape, order=‘C’)
参数解释:
a:要重塑的数组
newshape:重塑后的形状,新形状应与原始形状兼容。如果是整数,则结果将是该长度的一维数组。一个形状维度可以是-1。在这种情况下,将根据数组的长度和剩余维度推断该值。举个例子,原数组 a 是一个 4 行 n 列的二维数组,现在要将其转换成只有 1 行的一维数组,由于不清楚原二维数组有多少列,也就不清楚一共有多少元素,所以可以使用 np.reshape(a, (1, -1)) 语句将其转化为一维数组,其中 -1 会让程序自动计算有多少列,此概念将在后面举例具体说明。
order:可选值为 C、F、A,使用索引顺序读取 a 的元素,并按照索引顺序将元素放到变换后的的数组中,默认参数为 C。
C 指的是用类 C 写的读/索引顺序的元素,最后一个维度变化最快,第一个维度变化最慢。横着读,横着写,优先读/写一行。
F 是指用 FORTRAN 类索引顺序读/写元素,最后一个维度变化最慢,第一个维度变化最快。竖着读,竖着写,优先读/写一列。注意,C 和 F 选项不考虑底层数组的内存布局,只引用索引的顺序。
A 选项所生成的数组的效果与原数组 a 的数据存储方式有关,如果数据是按照 FORTRAN 存储的话,它的生成效果与 F 相同,否则与 C 相同。
numpy.ravel() 方法用于完成展平的操作。
基本语法:numpy.ravel(a, order=‘C’)
参数解释:
参数 | 描述 |
---|---|
a | 待转换的数组 |
order | 值可以是 C F A K,含义与 reshape 方法中参数的一样,与 reshape 方法不同的是多了个值 K |
K | 表示按顺序在内存中读取元素,但在跨距为负时会反转数据 |
numpy.resize() 方法会直接修改所操作的数组,返回具有指定形状的新数组,如果新数组大于原始数组,则新数组将填充 a 的重复副本。
基本语法:numpy.resize(a, new_shape)
参数解释:
参数 | 描述 |
---|---|
a | 待转换的数组 |
new_shape | 新数组的大小形状 |
numpy.ndarray.flatten() 方法恰如其名,flatten 就是展平的意思,与 ravel 函数的功能相同,二者的不同之处在于:flatten 方法会请求分配新的内存来保存结果,而 ravel 方法只是返回数组的一个视图(view)。
基本语法:ndarray.flatten(order=‘C’)
其 order 参数的值可以是 C F A K,含义与 reshape 和 ravel 方法中参数的一样.
numpy.ndarray.shape 本来是 Ndarray 对象的一个属性,但可以通过直接用一个正整数元组对其赋值来设置数组的维度
ndarray.transpose() 和 ndarray.T 方法的作用是对数组进行转置,即原来的行变成列,原来的列变成行。
numpy.swapaxes() 方法用于对换数组的两个轴
基本语法:numpy.swapaxes(a, axis1, axis2)
参数解释:a 为原始数组,axis1、axis2 分别对应两个轴,类型为整数