python数据科学(二) Numpy(一) 数组

本文最后更新于:2023年4月15日 晚上

python数据科学(二) Numpy(一) 数组

导入numpy库:

import numpy as np

1 | 从python列表创建数组

不同于python列表, numpy要求数组必须包含同一类型的数据, 如果类型不匹配, numpy将会向上转换

创建整型数组:

1
np.array([1,2,3,4,5])

明确指定数据类型:

1
np.array([1,2,3,4], dtype = 'float32')

指定多维的numpy数组:

1
2
3
4
5
np.array([range(i, i + 3) for i in [2, 4, 6]])

-> array([[2, 3, 4],
[4, 5, 6],
[6, 7, 8]])

2 | 从头创建数组

下面是几个例子:

3 | Numpy标准数据类型

指定数据类型的两种方式:

1
2
3
4
# 1. 用字符串参数来指定数据类型
np.zeros(10, dtype='int16')
# 2. 用相关的Numpy对象来指定数据类型
np.zeros(10, dtype=np.int16)

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
x2_sub_copy = x2[:2, :2].copy()

7 | 数组的变形

如将数字1-9放入一个3x3的矩阵中, 可以采用如下方法:

1
grid = np.arange(1, 10).reshape((3, 3))

将一个一维数组转化为二维的行或列的矩阵:

  • 第一种方法: 使用reshape
  • 第二种方法: 使用newaxis关键字

8 | 数组的拼接和分裂

拼接

数组的拼接主要由np.concatenate, np.vstacknp.hstack实现

np.concatenate的用法如下:

np.vstack(垂直栈)和np.hstack(水平栈)的用法如下:

分裂


python数据科学(二) Numpy(一) 数组
https://blog.roccoshi.top/posts/16351/
作者
RoccoShi
发布于
2021年1月14日
许可协议