numpy之数据清洗功能
-
numpy之数据清洗功能
-
- numpy的简介
-
- numpy的数组
-
- numpy的属性
-
- numpy的变换
-
- numpy的合并切割
-
- numpy的广播功能
-
- numpy的统计函数
-
- numpy的字符串函数
-
- numpy的排序函数
-
- numpy的矩阵函数
-
- numpy的线代模块
1. Numpy的简介
1.1Numpy的简介
NumPy 是 Numerical Python 的简称,是高性能计算和数据分析的基础包。包含了多维数组以及多维数组的操作。
Numpy相比于 Python 内建的库和数据类型有以下特性:
1.强大、灵活的多维数组对象及丰富的操作
2.C 实现,执行效率高
3.线性代数、傅里叶变换、丰富的随机数功能
4.复杂的(广播)功能
5.NumPy 通常与 SciPy (Scientific Python) 和 Matplotlib(绘图库)一起使用。这种组合广泛用于替代MatLab,是一个流行的技术计算平台。Python + Numpy 作为 MatLab 的替代方案,如今被视为一种更加现代和完整的编程语言。
1.2Numpy-Ndarray对象
Numpy 的核心是 ndarray 对象,这个对象封装了同质数据类型的n维数组。(数组,即为有序的元素序列)
ndarray 是 n-dimension-array 的简写。
基本的 ndarray 可以使用 NumPy 中的数组函数创建的,如下所示:
array(object, dtype=None, copy=True, order=‘K’, subok=False, ndmin=0)
np.array 可以把 list,tuple 或者其他的序列模式的数据转创建为 ndarray,默认创建一个新的 ndarray。
一维数组
list1 = [1, 2, 3, 3]
array1 = np.array(list1)
out
array([1, 2, 3, 3])
二维数组
list2 = [[1, 2, 3], [1, 2, 3], [1, 2, 3]]
np.array(list2)
out
array([[1, 2, 3],
[1, 2, 3],
[1, 2, 3]])
1.3Numpy的ndarray 与 python原生的list有什么区别
int整型—>float浮点型转换全部变成float。
int整型—>str字符串型全部变成string。
当只涉及 int float str的时候,其转换方向如下:
int–>float–>str
然而当我们ndarray中的元素包含序列数据,比如列表 元组时就不会转换。
list3 = [1, 2, 3, 4.5, 'abc', [1, 2]]
a = np.array(list3)
a
out
array([1, 2, 3, 4.5, 'abc', list([1, 2])], dtype=object)
ndarray对象里面的数据类型就是所有类的父类的实例类型object, 当然具体的看是什么类型就是什么类型,这就是面向对象里面的多态。
1.4Numpy的其他函数
查看数据类型ndarray.dtype
a = np.array([ 1, 2, 3])
a.dtype
out
dtype('int32')
数据类型的转换ndarray.astype
b = np.array([1, 2, 3, 4])
b.astype('int64')
out
array([1, 2, 3, 4], dtype=int64)
2. Numpy的数组
2.1常用的数组
(1)全0的数组np.zeros()
np.nzeros(shape, dtype=float, order=‘C’)
(2)全1的数组np.ones()
np.ones(shape, dtype=float64, order=‘C’)
(3)全为相同值的数组np.full()
np.full(shape, fill_value, dtype=None, order=‘C’)
(4)创建单位矩阵 (矩阵是二维数组)np.eye()
从左上角到右下角的对角线(称为主对角线)上的元素均为1,除此以外全都为0。
np.eye(N, M=None, k=0, dtype=<class ‘float’>, order=‘C’)
k: 对角线的偏移,默认是0,即偏移。大于0, 代表往主对角线上方偏移;小于0, 代表往主对角线下方偏移。
(5)初始化一个数组np.empty
np.empty(shape, dtype=float, order=‘C’)
(6)创建对角矩阵np.diag()对角矩阵(diagonal matrix)是一个主对角线之外的元素皆为0的矩阵。
np.diag(v, k=0)
v, 如果是一个一维的序列,则返回以该序列为对角的二维数组如果是一个二维的数组, 则返回该二维数组的对角,
k, 偏移。
(7)设置空值np.nan
nan是一个特殊的值,常常用于表示数据的缺失。
(8)创建随机数组np.random随机生成一些整数。
np.random.randint(low, high, size)
(9)返回满足指定均值和标准差的正太分布的数
np.random.normal(loc=0.0, scale=1.0, size=None)
(10)设置随机数种子np.random.seed()
这个的目的就是让大家以同样一种随机方式,生成的随机数一样,必须和随机代码放在一个代码框里才行接收一个32位的无符号整数(0-2**32),若该数相同,则可随机出相同的数。
(11)创建线性序列的数组np.arange()
np.arange(start, stop, sep]
(12)指定在某个范围内生成指定书目的数
np.linspace(指定在某个范围内生成指定书目的数
np.linspace(start, stop, num=50, endpoint=True,)
3. Numpy的属性
3.1ndarray对象的属性
np.random.seed(3)
x1 = np.random.randint(1,10, size=3) # 一维数组
数组的形状ndarray.shape
x1.shape
数组的维度ndarray.ndim
x1.ndim
查看数组中的元素个数ndarray.size
x1.size
查看数组中的元素的数据类型ndarray.dtype
x1.dtype
查看数组中每个元素所占的内存字节数ndarray.itemsize
x1.itemsize
4. Numpy的变换
4.1 ndarray对象的方法一维度变换
m = np.random.randint(1, 100,(2, 3, 4))
改变数组的形状ndarray.reshape(不改变原数组)
m.reshape(3,8)
改变数组的形状ndarray.resize(改变原数组)
m.resize(4,6)
返回一个一维数组
n = m.flatten()
np.ravel()、fla