> 技术文档 > Python的Numpy库应用入门(超详细教程)_numpy教程

Python的Numpy库应用入门(超详细教程)_numpy教程

目录

一、配置环境

1.1 检查是否有pip库

1.2 安装Numpy库

二、数组

2.1 生成一维数组

2.2  生成二维数组

2.3 查看数组形状

2.4 查看数组维度 

2.5 全零数组

2.6 全1数组

2.7 单位矩阵

 2.8 指定数据类型

三、索引

3.1 获取元素

3.2 重新赋值

3.3 获取行数据

3.4 获取列数据

3.5 获取某一部分

3.6 布尔值索引

3.7 获取奇数项

3.8 公式获取奇数项

3.9 np.where

3.10 偶数不变,奇数翻倍

3.11 转置

3.12 轴转换

四、运算函数 

4.1 均值

4.2 和

4.3 累加和

4.4 标准差

4.5 方差

4.6 最大值

4.7 最小值 

4.8 正态分布的随机矩阵

4.9 随机排序

4.10 均匀分布的随机数矩阵

4.11 固定范围内随机整数 

4.12 保存数据

4.13 导入数据

4.14 压缩数据 


        Python第三方库是由Python社区或其他开发者创建并维护的,扩展Python标准库功能的软件包或模块,它们提供了丰富的工具和功能,涵盖了从Web开发到数据科学、机器学习、图像处理等各个领域,使得开发工作更加高效和便捷。

一、配置环境

1.1 检查是否有pip库

在PyCharm的底部找到并打开“Terminal”选项卡。

在终端中输入命令:

 pip --version 或 pip list

如果pip已安装,你将看到pip的版本信息或已安装的库列表。如果提示“pip不是内部或外部命令”,则可能pip未安装或未正确配置。

1.2 安装Numpy库

安装NumPy的指令主要取决于你使用的Python环境和包管理工具 

在命令行或终端运行以下代码:

pip install numpy

安装成功后的展示图如下:

再检查是否安装完成: 

pip show numpy

二、数组

利用NumPy库可以生成多种形式的数组

2.1 生成一维数组

import numpy as npA = np.array([1, 2, 3])print(A)

2.2  生成二维数组

import numpy as npA = np.array([[1, 2, 3],[4, 5, 6]])print(A)

2.3 查看数组形状

import numpy as npA = np.array([[1, 2, 3],[4, 5, 6]])print(A.shape)

2.4 查看数组维度 

import numpy as npA = np.array([[1, 2, 3],[4, 5, 6]])print(A.ndim)

2.5 全零数组

import numpy as npprint(np.zeros((2,3)))

2.6 全1数组

import numpy as npprint(np.ones((2,3)))

2.7 单位矩阵

import numpy as npprint(np.eye(3,3))

 2.8 指定数据类型

import numpy as npfrom numpy import dtypeA1 = np.array([[1, 2, 3],[4, 5, 6]], dtype = np.float64)A2 = np.array([[7, 8, 9],[10, 11, 12]], dtype = np.float32)A3 = np.array([[13, 14, 15],[16, 17, 18]], dtype = np.int32)print(A1.dtype)print(A2.dtype)print(A3.dtype)

变换数据类型 

import numpy as npfrom numpy import dtypeA1 = np.array([[1, 2, 3],[4, 5, 6]], dtype = np.float64)A2 = np.array([[7, 8, 9],[10, 11, 12]], dtype = np.float32)A3 = np.array([[13, 14, 15],[16, 17, 18]], dtype = np.int32)B1 = A1.astype(np.int32)B2 = A2.astype(np.int8)B3 = A3.astype(np.float32)print(B1.dtype)print(B2.dtype)print(B3.dtype)

三、索引

        索引是数组中数据的编号方式,通过索引可以访问、获取或修改数组中的对应元素。在大多数编程语言中,数组的索引是从0开始的连续整数序列。 

3.1 获取元素

import numpy as npfrom numpy import dtypeA = np.arange(9).reshape((3,3))print(A)print(\"索引获取的元素:\",A[1, 2])

3.2 重新赋值

import numpy as npfrom numpy import dtypeA = np.arange(9).reshape((3,3))print(A)A[1, 2] = 10print(A)

3.3 获取行数据

import numpy as npfrom numpy import dtypeA = np.arange(9).reshape((3,3))print(A[1, :])

3.4 获取列数据

import numpy as npfrom numpy import dtypeA = np.arange(9).reshape((3,3))print(A[:, 1])

3.5 获取某一部分

import numpy as npfrom numpy import dtypeA = np.arange(9).reshape((3,3))print(A[0:3, 1:3 ])

3.6 布尔值索引

import numpy as npfrom numpy import dtypeA = np.arange(9).reshape((3,3))print(A)index = A % 2 == 1print(index)

3.7 获取奇数项

import numpy as npfrom numpy import dtypeA = np.arange(9).reshape((3,3))print(A)index = A % 2 == 1print(A[index])

3.8 公式获取奇数项

import numpy as npfrom numpy import dtypeA = np.arange(9).reshape((3,3))print(A)print(A[A % 2 == 1])

3.9 np.where

import numpy as npfrom numpy import dtypeA = np.arange(9).reshape((3,3))print(A)a, b = np.where(A % 2 == 0)# 行索引print(a)# 列索引print(b)# 数组索引print(A[a, b])

3.10 偶数不变,奇数翻倍

import numpy as npfrom numpy import dtypeA = np.arange(9).reshape((3,3))print(A)print(np.where(A % 2 == 0, A, A * 2))

3.11 转置

如果数组是2*3,则会转置为3*2的数组,行变列、列变行

import numpy as npfrom numpy import dtypeA = np.arange(9).reshape((3,3))print(A)print(A.T)

3.12 轴转换

import numpy as npfrom numpy import dtypeA = np.arange(24).reshape(2, 3, 4)print(A.shape)B = A.transpose((2, 1, 0))print(B.shape)

B = A.transpose((2, 1, 0))transpose方法用于对数组进行转置操作。括号内的参数(2, 1, 0)指定了新的维度的顺序。原始数组A的维度顺序是(深度, 高度, 宽度),即(2, 3, 4)。通过transpose((2, 1, 0))操作,我们将维度顺序改为(宽度, 高度, 深度),即(4, 3, 2)。这意味着新的数组B将有4个二维数组(深度为4),每个二维数组有3行2列。

四、运算函数 

4.1 均值

import numpy as npfrom numpy import dtypeA = np.arange(15).reshape(3,5)print(A)# 数组均值print(\"数组均值\", A.mean())# 每列均值print(\"每列均值\", A.mean(axis=0))# 每行均值print(\"每行均值\", A.mean(axis=1))

4.2 和

import numpy as npfrom numpy import dtypeA = np.arange(15).reshape(3,5)print(A)# 数组总和print(\"数组总和\", A.sum())# 每列和print(\"每列和\", A.sum(axis=0))# 每行和print(\"每行和\", A.sum(axis=1))

4.3 累加和

import numpy as npfrom numpy import dtypeA = np.arange(15).reshape(3,5)print(A)# 数组累加和print(\"数组总和\", A.cumsum())# 每列累加和print(\"每列和\", A.cumsum(axis=0))# 每行累加和print(\"每行和\", A.cumsum(axis=1))

4.4 标准差

import numpy as npfrom numpy import dtypeA = np.arange(15).reshape(3,5)print(A)# 数组标准差print(\"数组标准差\", A.std())# 每列标准差print(\"每列标准差\", A.std(axis=0))# 每行标准差print(\"每行标准差\", A.std(axis=1))

4.5 方差

import numpy as npfrom numpy import dtypeA = np.arange(15).reshape(3,5)print(A)# 数组方差print(\"数组方差\", A.var())# 每列方差print(\"每列方差\", A.var(axis=0))# 每行方差print(\"每行方差\", A.var(axis=1))

4.6 最大值

import numpy as npfrom numpy import dtypeA = np.arange(15).reshape(3,5)print(A)# 数组最大值print(\"数组最大值\", A.max())# 每列最大值print(\"每列最大值\", A.max(axis=0))# 每行最大值print(\"每行最大值\", A.max(axis=1))

4.7 最小值 

import numpy as npfrom numpy import dtypeA = np.arange(15).reshape(3,5)print(A)# 数组最小值print(\"数组最小值\", A.min())# 每列最小值print(\"每列最小值\", A.min(axis=0))# 每行最小值print(\"每行最小值\", A.min(axis=1))

4.8 正态分布的随机矩阵

import numpy as npfrom numpy import dtypeprint(np.random.randn(2, 3))

4.9 随机排序

import numpy as npfrom numpy import dtypenp.random.seed(10)print(np.random.permutation(10))

4.10 均匀分布的随机数矩阵

import numpy as npfrom numpy import dtypenp.random.seed(10)print(np.random.rand(2, 3))

4.11 固定范围内随机整数 

import numpy as npfrom numpy import dtypenp.random.seed(10)print(np.random.randint(2, 8, size=6))

4.12 保存数据

import numpy as npfrom numpy import dtypeA = np.arange(12).reshape(4, 3)np.save(\"test.npy\", A)print(\"保存成功\")

4.13 导入数据

import numpy as npfrom numpy import dtypeA = np.load(\"test.npy\")print(A)

4.14 压缩数据 

import numpy as npfrom numpy import dtypeA = np.arange(12).reshape(4, 3)B = np.load(\"test.npy\")# 将以上两个数组压缩成一个文件np.savez(\"test.npz\", A = A, B = B)# 导入保存的压缩文件data = np.load(\"test.npz\")print(data[\"A\"])

上一篇文章:Python的条件判断、循环和函数(超详细教学)-CSDN博客https://blog.csdn.net/Z0412_J0103/article/details/144829113下一篇文章: Python的pandas库基础知识(超详细教学)-CSDN博客https://blog.csdn.net/Z0412_J0103/article/details/144849671