Numpy数组
1.Numpy数组对象
Numpy中的多维数组称为ndarray,他有两个组成部分。
1.数据本身
2.描述数据的元数据
2.Numpy的数值类型
bool: 布尔型
inti:其长度取决于平台的整数(通常为int32或int64)
int8:字节类型
int16:整型
int32:整型
int64:整型
uint8:无符号整型
uint16:无符号整型
uint32:无符号整型
uint64:无符号整型
float16:半精度浮点型
float32:单精度浮点型
float64或者float:双精度浮点型
complex64:复数类型
complex128或者complex:复数类型
谨记:不要把复数类型转换为整型,这会报错。,同样也不允许把复数转化为浮点数。
3.一维数组的切片与索引
一维数组Numpy数组的切片操作与Python列表的切片一样。
In:a=np.arange(9)
In:a[3:7]
Out:array([3,4,5,6])
In:a[:7:2]
Out:array([0,2,4,6])
4.处理数组形状
可以利用以下函数处理数组的形状
1.拆解:可以用ravel()函数将多维数组变成一维数组,a.ravel()
2.拉直:flatten()函数的名字取得很贴切,其功能与ravel()相同,可是,flatten()返回的是真实的数组,需要分配新的内存空间;而ravel()函数返回的只是数组的视图
3.用元组指定数组形状:除了reshape()函数外,还可以用元组来轻松定义数组的形状。
4.转置:行变列,列变行。a.transpose()
5.调整大小:函数resize()作用类似于reshape()但是会改变所作用的数组
堆叠数组
1.水平叠加
用concatenate()函数也能达到同样的效果
2.垂直叠加
当参数axis置为0时,concatenate()函数也会得到同样效果
3.深度叠加
这种方法是沿着第三个坐标轴(纵向)的方向来叠加一摞数组。
column_stack()函数以列方式对一维数组进行堆叠
5.行式堆叠拆分Numpy数组
相关函数hsplit()、vsplit()、dsplit()和split()。我们既可以把数组分成相同形状的数组,也可以从规定的位置开始切取数组。
1.横向拆分
相当于调用参数axis=1的split()函数:
2.纵向拆分
当参数axis=0,split()函数也会沿着纵轴方向分解数组
3.深度拆分
前提是必须要有深度。
Numpy的数组属性
ndim:存储的是维度的数量
size:用来保存元素的数量
itemsize:可以返回数组中各个元素所占用的字节数
nbytes:整个数组所需的字节数量
T:与transpose()函数相同,转置
real:该属性返回实部
imag:该属性返回虚部
flat属性:可以返回一个numpy.flatiter对象,这是获得flatiter对象的唯一方法,但我们无法访问flatiter的构造函数。可以使用flat的迭代器来遍历数组,就像遍历“胖”数组那样
数组的转换
1.Numpy数组转换成Python列表,使用tolist()函数
2.astype()函数可以把数组元素转换成指定类型
Numpy数组的广播
当操作对象的形状不一样时,Numpy会尽力进行处理
例如,假设一个数组要跟一个标量相乘,这时标量需要根据数组的形状进行扩展,然后才可以执行乘法运算。这个扩展的过程叫做广播。