python数据科学(二) Numpy(一) 数组
本文最后更新于:2023年4月15日 晚上
python数据科学(二) Numpy(一) 数组
导入numpy库:
import numpy as np
1 | 从python列表创建数组
不同于python列表, numpy要求数组必须包含同一类型的数据, 如果类型不匹配, numpy将会向上转换
创建整型数组:
1 |
|
明确指定数据类型:
1 |
|
指定多维的numpy数组:
1 |
|
2 | 从头创建数组
下面是几个例子:
3 | Numpy标准数据类型
指定数据类型的两种方式:
1 |
|
NumPy的标准数据类型:
4 | NumPy数组的属性
5 | NumPy数组的索引
利用索引获取数组元素的示例如下
也可以用索引修改元素
6 | 数据切片: 获取子数组
NumPy的切片语法和Python列表的标准切片语法相同, 为了获取数组x的一个切片, 可以采用以下方式:
x[start:stop:step]
当以上参数未指定时, 默认值分别为start = 0
, stop = 数组的维度大小
, step = 1
一维子数组
多维子数组
多维子数组用逗号分隔, 处理每一个维度即可
空切片可以用[::, ::2]
或者[:, ::2]
并且在获取行时候可省略: 即x2[0, :]
等价于x2[0]
视图与副本
数组切片返回的是数组数据的视图, 而不是数组数据的副本
意味着如果修改切片得到的子数组, 原数组也会被修改
这种默认的处理方式实际上非常有用:它意味着在处理非常大的数据集时,可以获取或处理这些数据集的片段,而不用复制底层的数据缓存。
如果需要获得切片数组的副本, 只需要在切片后调用copy()
方法即可
1 |
|
7 | 数组的变形
如将数字1-9放入一个3x3的矩阵中, 可以采用如下方法:
1 |
|
将一个一维数组转化为二维的行或列的矩阵:
- 第一种方法: 使用reshape
- 第二种方法: 使用newaxis关键字
8 | 数组的拼接和分裂
拼接
数组的拼接主要由np.concatenate
, np.vstack
和np.hstack
实现
np.concatenate
的用法如下:
np.vstack
(垂直栈)和np.hstack
(水平栈)的用法如下: