NumPy是一个开源的Python科学计算基础库,包含:
- 一个强大的N维数组对象 ndarray
- 广播功能函数
- 整合C/C++/Fortran代码的工具
- 线性代数、傅里叶变换、随机数生成等功能
NumPy是SciPy、Pandas等数据处理或科学计算库的基础
包的下载与导入
Numpy 包,如果已安装annaconda可直接使用,如果没有,也可以自行搜索下载
导入常用别名 np
import numpy as np
ndarray
ndarray 是一个 多维数组对象 ,它由两部分组成:
- 实际的数据
- 描述这些数据的元数据(数据维度,数据类型等)
ndarray 数组内元素类型一般要求相同(也可不同,不过这样就和list区别不大了),数组下标从0开始。
它能够从整体来描述一个数据集,能够以整体的形式进行两个数组的运算比较等操作。
创建
- 直接使用
np.array()
参数为一个列表
>>> a = np.array([[0,1,2,3,4],
[5,6,7,8,9]])
属性
以 [[0,1,2,3,4]],[5,6,7,8,9]]
为例
- 使用
.ndim
获取维度信息
>>> a.ndim
>>> 2
- 使用
.shape
获取数组的形状
>>> a.shape
>>> (2,5)
- 使用
.size
获取数组的大小(元素个数)
>>> a.size
>>> 10
- 使用
.dtype
获取数组内元素的存储类型,(默认值与操作系统有关)
>>> a.dtype
>>> dtype('int64')
- 使用
.itemsize
获取数组内单个元素的大小(字节)
>>> a.itemsize
>>> 8
元素类型
ndarray 没有 double 类型
支持复数类型 complex64 , complex128
常见的类型:int , uint, float , bool
- 后缀16,32,65代表字节长度
数组的变换
维度变换
- 使用
.reshape(shape)
不改变数组元素,返回一个shape形状的数组,原数组不变,shape为数组形状。
注意要保证改变形状后的数组元素与之前一致
>>> a = np.array([[1,2,3,4,5],[6,7,8,9,10]])
>>> b = a.reshape([5,2])
>>> [[ 1 2 3 4 5]
[ 6 7 8 9 10]]
>>> [[ 1 2]
[ 3 4]
[ 5 6]
[ 7 8]
[ 9 10]]
原先2*5的数组a 变为5*2的数组b
使用
.resize(shape)
与.reshape()
功能一致使用
.swapaxes(ax1,ax2)
调换两个维度
>>> a = np.array([[1,2,3,4,5],[6,7,8,9,10]])
>>> b = a.swapaxes(0,1)
>>> b
>>> [[ 1 6]
[ 2 7]
[ 3 8]
[ 4 9]
[ 5 10]]
注意与reshape返回的数组的区别
- 使用
.flatten()
变为一维数组
类型变换
使用方法 .astype(new_type)
返回一个新的数组
>>> b = a.astype(float32)
列表变换
使用方法 .tolist()
返回一个列表
>>> ls = a.tolist()
a是一个ndarray数组,ls是由这个数组生成的列表