Numpy的数组对象ndarray
属性
属性 |
说明 |
.ndim |
秩。即轴的数量或维度的数量 |
.shape |
对象的尺度 |
.size |
对象元素的个数 |
.dtype |
对象的元素类型 |
.itemsize |
对象中每个元素的大小,以字节为单位 |
>>> import numpy as np
>>> a = np.array([[0,1,2],[3,4,5],[6,7,8]])
>>> a
array([[0, 1, 2],
[3, 4, 5],
[6, 7, 8]])
>>> a.ndim
3
>>> a.shape
(3, 3)
>>> a.size
9
>>> a.dtype
dtype('int32')
>>> a.itemsize
4
元素类型
数据类型 |
说明 |
bool |
布尔,true或false |
intc |
int整数类型 |
intp |
用于索引的整数 |
int8 |
整数,取值【-128,127】 |
int16 |
整数,取值【-32768,32767】 |
int32 |
整数,取值【 − 2 31 , 2 31 − 1 -2^{31},2^{31}-1 −231,231−1】 |
int64 |
整数,取值【 − 2 63 , 2 63 − 1 -2^{63},2^{63}-1 −263,263−1】 |
uint8 |
8位无符号整数,取值【0,255】 |
unit16 |
16位无符号整数,取值【0,65535】 |
unit32 |
取值【 0 , 2 32 − 1 0,2^{32}-1 0,232−1】 |
unit64 |
取值【 0 , 2 64 − 1 0,2^{64}-1 0,264−1】 |
float16 |
16位半精度浮点数 |
float32 |
32位半精度浮点数 |
float64 |
64位半精度浮点数 |
complex64 |
复数类型,实部和虚部都是32位浮点数 |
complex128 |
复数类型,实部和虚部都是64位浮点数 |
ndarray数组的创建变换
- 从python中的列表、元组等类型创建ndarray数组
x =np.array(list/tuple)
- 创建函数
函数 |
说明 |
np.arange(n) |
返回ndarray类型,元素从0到n-1 |
np,ones(shape) |
根据shape生成一个全1数组 |
np.zeros(shape) |
根据shape生成一个全0数组 |
np.full(shape,val) |
根据shape生成一个全val值的数组 |
np.eye(n) |
创建一个正方的n*n单位矩阵,对角线为1,其余为0 |
np.ones_like(a) |
根据数组a生成一个全1数组 |
np.zeros_like(a) |
根据数组a生成一个全0数组 |
np.full_like(a,val) |
根据数组a生成一个全值为val的数组 |
np.linspace(start,end,spac) |
根据气质数据等间距地填充数据 |
np.concatenate(start,end,n,endpoint) |
合并两个数组,生成一个新的数组 |
>>> np.array([[0,1,2],[3,4,5],[6,7,8],[9,10,11]])
array([[ 0, 1, 2],
[ 3, 4, 5],
[ 6, 7, 8],
[ 9, 10, 11]])
>>> np.arange(12)
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11])
>>> np.ones((3,3))
array([[1., 1., 1.],
[1., 1., 1.],
[1., 1., 1.]])
>>> np.zeros((3,3))
array([[0., 0., 0.],
[0., 0., 0.],
[0., 0., 0.]])
>>> np.full((2,3,4),6)
array([[[6, 6, 6, 6],
[6, 6, 6, 6],
[6, 6, 6, 6]],
[[6, 6, 6, 6],
[6, 6, 6, 6],
[6, 6, 6, 6]]])
>>> np.eye(3)
array([[1., 0., 0.],
[0., 1., 0.],
[0., 0., 1.]])
a = np.array([[0,1,2],[3,4,5],[6,7,8],[9,10,11]])
>>> a
array([[ 0, 1, 2],
[ 3, 4, 5],
[ 6, 7, 8],
[ 9, 10, 11]])
>>> np.ones_like(a)
array([[1, 1, 1],
[1, 1, 1],
[1, 1, 1],
[1, 1, 1]])
>>> np.zeros_like(a)
array([[0, 0, 0],
[0, 0, 0],
[0, 0, 0],
[0, 0, 0]])
>>> np.full_like(a,6)
array([[6, 6, 6],
[6, 6, 6],
[6, 6, 6],
[6, 6, 6]])
>>> a = np.linspace(1,10,5)
>>> a
array([ 1. , 3.25, 5.5 , 7.75, 10. ])
>>> b = np.linspace(1,10,5,endpoint = False)
>>> b
array([1. , 2.8, 4.6, 6.4, 8.2])
>>> c = np.concatenate((a,b))
>>> c
array([ 1. , 3.25, 5.5 , 7.75, 10. ,\
1. , 2.8 , 4.6 , 6.4 ,8.2 ])
数组维度变换
方法 |
说明 |
.reshape(shape) |
返回一个shape形状的数组,原数组不变 |
.resize(shape) |
修改原数组为shape形状 |
.swapaxes(ax1,ax2) |
将数组n个维度中两个维度进行调换 |
.flatien() |
对数组进行降维,返回折叠后的一维数组,原数组不变 |
数组的运算
函数 |
说明 |
np.abs(x) & np.fabs(x) |
计算各元素的绝对值 |
np.sqrt(x) |
计算各元素的平方根 |
np.square(x) |
计算各元素的平方 |
np.log(x) |
计算各元素的对数 |
np.ceil(x)&np.floor(x) |
计算各元素的ceiling或floor |
np.rint(x) |
对各元素四舍五入 |
np.modf(x) |
返回各元素的小数部分和整数部分 |
np.sin(x)… |
计算各元素的三角函数 |
np.exp(x) |
计算各元素的指数值 |
np.sign(x) |
计算元素符号值,1(+),0(0),-1(-) |
np.fmax(x,y) |
元素级的最大值 |
np.fmin(x,y) |
元素级的最小值 |
np.mod(x,y) |
元素级的模运算 |
np.copysign(x,y) |
将数组y中各元素的符号赋值给数组x对应的元素 |
Numpy数据存储
CSV文件_适合二维以下数据
- 写入函数:
np.savetxt(frame,array,fmt,delimiter)
-frame:文件
-array:写入文件的数组
-fmt:写入文件格式
-deliniter:分隔字符串,默认是空格
- 读取函数
np.loadtxt(frame,dtype,delimiter,unpack)
-frame:文件
-deype:数据类型
-delimiter:分隔字符串,默认空格
-unpack:如果True,读入属性将分别写入不同变量
多维度数据
- 文件写入
a.tolife(frame,sep=’ ‘,format=’%s’)
-frame:文件
-sep:分隔字符串,如果是空格,写入文件为二进制
-format:写入数据格式
- 文件读取
- np.froomfile(frame,deype=float,count=-1,sep=’ ')
-frame:文件
-deype:读取的数据类型
-count:读入元素个数
-sep:数据分割字符串
- 注意:
文件的读取时必须明确原数组的属性,写入格式。
numpy的便捷文件存取
- 文件写入
np.save(fname,array)
-fname:文件
-array:数组
- 文件读取
np.load(fname)
-fname:文件名
- 注意:
文件以 .npy 为扩展名,压缩扩展名为 .npz
Numpy函数
函数 |
说明 |
sum(a,axis=None) |
根据轴axis计算数组a元素之和 |
mean(a,axis=None) |
根据轴axis计算数组a元素期望值 |
average(a,axis=None,weights=None) |
根据轴axis计算数组a元素加权平均值 |
std(a,axis=None) |
根据轴axis计算数组a元素标准差 |
var(a,axis=None) |
根据轴axis计算数组a元素方差 |
min(a)、max(a) |
数组a中元素的最小(大)值 |
argmin(a)、argmax(a) |
数组a中元素最小值、最大值的降一维后下标 |
unravel_index(index,shape) |
根据shape将一维下标index转换成多维下标 |
ptp(a) |
数组a中元素最大值和最小值的差 |
median(a) |
数组a中元素的中位数 |
np.gradient(f) |
计算数组f中元素的梯度,当f为多维时,返回每个维度梯度 |