专栏名称: 新语数据故事汇
《新语数据故事汇,数说新语》科普数据科学、讲述数据故事,深层次挖掘数据价值。
目录
相关文章推荐
拾榴询财  ·  2025,大家一起更好的赚钱 ·  3 天前  
简七读财  ·  弹性退休来了,怎么选? ·  昨天  
西安头条  ·  贯通!西安再添一条区域主干道 ·  3 天前  
西安头条  ·  贯通!西安再添一条区域主干道 ·  3 天前  
中铁国际集团  ·  国家主席习近平发表二〇二五年新年贺词! ·  4 天前  
51好读  ›  专栏  ›  新语数据故事汇

数据科学专业人士必须掌握NumPy的常用方法(一)

新语数据故事汇  · 公众号  ·  · 2024-04-11 13:02

正文

NumPy(或Numeric Python)是每个数据科学和机器学习项目的核心。整个数据驱动生态系统在某种程度上都依赖于NumPy及其核心功能。这使得它成为Python中构建的最重要和具有颠覆性的库之一。

考虑到NumPy由于其无与伦比的潜力在工业和学术界具有广泛的适用性,对其方法和语法有牢固的了解对于Python程序员来说是至关重要的。

然而,试图掌握NumPy库,如果你从NumPy的官方文档开始,一开始可能会感到非常令人生畏和不知所措。从常用的方法入手快速掌握NumPy。

分成两部分,下面主要从NumPy数组创建方法、NumPy数组操作方法 两方面开始,后续继续NumPy 数学运算、矩阵和向量运算、排序和搜索及统计方法的介绍。

导入库

当然,如果你想使用NumPy库,你应该先导入它。这里普遍采用的惯例是将numpy设置别名为np。我们也会偶尔使用pandas,所以让我们也导入它。为更好展现结果输出,我们引用icecream 包。

import numpy as npimport pandas as pdfrom  icecream import  ic

NumPy数组创建方法

以下是创建NumPy数组的一些常用方法。

1.从Python列表转成Array

要将Python列表转换为NumPy数组,请使用np.array()方法:

## 创建一维arraya=[1,2,3]ic(np.array(a))ic(type(np.array(a)))
## 创建多维arraya = [[1,2,3], [4,5,6]]ic(np.array(a))
## 创建多维指定数据类型 arraya = [[1,2,3], [4,5,6]]ic(np.array(a, dtype = np.float32))

2.创建一个全零的NumPy数组

常见的是创建一个填充了零的NumPy数组。可以使用NumPy中的np.zeros()方法来实现:

## 创建一维度全为0 的arrayic(np.zeros(5))
## 创建多维全为0 的 arrayic(np.zeros((2, 3)))

3.创建一个全为1的NumPy数组

如果你想创建一个填充了一的数组,而不是零,那么可以使用np.ones()方法:

ic(np.ones((2, 3)))

4.创建一个单位矩阵的NumPy数组

在单位矩阵中,对角线上的元素为“1”,而除了对角线上的元素外,所有其他元素均为“0”,如下所示:

ic(np.eye(3))

5.创建具有特定步长的等间距NumPy数组

要在给定的区间内生成等间距的值,请使用np.arange()方法:

## 生成从start=0到stop=10,步长为1的值:ic(np.arange(10))## 生成从start=5到stop=11,步长为1的值:ic(np.arange(5, 11))## 生成从start=5到stop=11,步长为2的值:ic(np.arange(5, 11, 2))

6.创建具有特定数组大小的等间距NumPy数组

这与上面讨论的np.arange()类似,但使用np.linspace(),你可以在一个区间内生成num个数字,并且这些数字是均匀间隔的。

ic(np.linspace(start = 10, stop = 20, num = 5))

7.生成一个随机的NumPy整数数组

要生成一个随机的整数数组,请使用np.random.randint()方法:

np.random.randint(low = 5, high = 16, size = 5)

8.生成一个随机的NumPy浮点数数组

要生成随机的浮点数样本,可以使用np.random.random()方法:

np.random.random(size = 10)

9.从Pandas Series生成NumPy数组

如果你想要将Pandas Series转换为NumPy数组,你可以使用np.array()或np.asarray()方法:

s = pd.Series([1,2,3,4], name = "col")ic(np.array(s))ic(np.asarray(s))

NumPy数组操作方法

接下来,我们将讨论一些最广泛使用的用于操作NumPy数组的方法。

10.NumPy数组的维度数

你可以使用NumPy数组的ndarray.shape属性的np.shape()方法来确定NumPy数组的维度数,如下所示:

a = np.ones((2, 3))print("Shape of the array - Method 1:", np.shape(a))print("Shape of the array - Method 2:", a.shape)

11.改变NumPy数组的维度数

reshape是指在不改变数据的情况下给你的NumPy数组赋予新的形状。可以使用np.reshape()方法来改变数组的形状:

a = np.arange(10)a.reshape((2, 5))

12.转置NumPy数组

如果你想要转置一个NumPy数组,你可以使用np.transpose()方法或者ndarray.T,如下所示:

a = np.arange(12).reshape((6, 2))ic(a)ic(a.transpose())ic(a.T)

13.连接多个NumPy数组以形成一个NumPy数组

你可以使用np.concatenate()方法来连接一系列数组并得到一个新的NumPy数组:

a = np.array([[1, 2], [3, 4]])b = np.array([[5, 6]])ic(np.concatenate((a, b), axis=0))ic(np.concatenate((a, b.T), axis=1))ic(np.concatenate((a, b), axis=None))

axis=0相当于np.vstack()。
axis=1相当于np.hstack()。

axis=None 相当于ndarray.flatten()。

14.展平NumPy数组

如果你想将整个NumPy数组压缩成一个单一的维度,你可以使用ndarray.flatten()方法,如下所示:

a = np.array([[1,2], [3,4]])ic(a)ic(a.flatten())

15.NumPy数组的唯一元素

要确定NumPy数组的唯一元素,可以使用np.unique()方法,如下所示:

a = np.array([[1, 2], [2, 3]])ic(np.unique(a))
a = np.array([[1, 2, 3], [1, 2, 3], [2, 3, 4]])ic(np.unique(a, axis=0))
a = np.array([[1, 1, 3], [1, 1, 3], [1, 1, 4]])ic(np.unique(a, axis=1))

16.挤压(squeeze)NumPy数组

如果你想要从NumPy数组中移除长度为一的轴,请使用np.squeeze()方法。下面是示例:

x = np.array([[[0], [1], [2]]])
ic(x.shape)
ic(np.squeeze(x).shape)

17.将NumPy数组转换为Python列表

要从NumPy数组中获得一个Python列表,可以使用ndarry.tolist()方法,如下所示:

a = np.array([[1, 1, 3], [1, 1, 3], [1, 1, 4]])a.tolist()


上面简单的示例了一下NumPy数组创建、NumPy数组操作的常见方法。