Python学习-Numpy-3

server/2024/12/2 15:39:04/

Numpy数字统计函数

np.sum所有元素的和
np.prod所有元素的乘积
np.cumsum元素的累积加和(前1,前2..元素累加)
np.cumprod元素的累积乘积(前1,前2..元素累乘)
np.min最小值
np.max最大值
np.percentile0-100百分位数
np.quantile0-1分位数
np.median中位数
np.mean平均值
np.std标准差
np.var方差
np.average加权平均,参数可以指定weights

1、函数的应用 

1.1 np.sum(x)

python">import numpy as npx=np.arange(12).reshape(3,4)
print("x=",x)
print("np.sum(x)=",np.sum(x))
x= [[ 0  1  2  3][ 4  5  6  7][ 8  9 10 11]]
np.sum(x)= 66

 1.2 np.prod(x)

python">import numpy as npx=np.arange(12).reshape(3,4)
print("x=",x)
print("np.prod(x)=",np.prod(x))

 x= [[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]
np.prod(x)= 0

 1.3 np.cumsum(x)

python">import numpy as npx=np.arange(12).reshape(3,4)
print("x=",x)
print("np.cumsum(x)=",np.cumsum(x))

x= [[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]
np.cumsum(x)= [ 0  1  3  6 10 15 21 28 36 45 55 66]

1.4 np.cumprod(x)

python">import numpy as npx=np.arange(12).reshape(3,4)
print("x=",x)
print("np.cumprod(x)=",np.cumprod(x))

x= [[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]
np.cumprod(x)= [0 0 0 0 0 0 0 0 0 0 0 0]

1.5  np.min(x)

python">import numpy as npx=np.arange(12).reshape(3,4)
print("x=",x)
print("np.min(x)=",np.min(x))

x= [[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]
np.min(x)= 0

1.6 np.max(x)

python">import numpy as npx=np.arange(12).reshape(3,4)
print("x=",x)
print("np.max(x)=",np.max(x))

x= [[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]
np.max(x)= 11

1.7  np.percentile和np.quantile

np.percentile和np.quantile,偶数位不存在的数用左右两数和除2

python">import numpy as npx=np.arange(12).reshape(3,4)
print("x=",x)
#np.percentile将数组按照从小到大进行排列,然后取排在25%,50%,75%位置的数字
print("np.percentile(x,[25,50,75])=",np.percentile(x,[25,50,75]))#np.quantile将数组按照从小到大进行排列,然后取排在0.25,0.5,0.75位置的数字
print("np.quantile(x,[0.25,0.5,0.75])=",np.quantile(x,[0.25,0.5,0.75]))

x= [[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]
np.percentile(x,[25,50,75])= [2.75 5.5  8.25]
np.quantile(x,[0.25,0.5,0.75])= [2.75 5.5  8.25]

1.8 np.median(x)

python">import numpy as npx=np.arange(12).reshape(3,4)
print("x=",x)
# 中位数
print("np.median(x)=",np.median(x))

x= [[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]
np.median(x)= 5.5

1.9  np.mean(x)

python">import numpy as npx=np.arange(12).reshape(3,4)
print("x=",x)# 平均数
print("np.mean(x)=",np.mean(x))

x= [[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]
np.mean(x)= 5.5

1.10 np.std(x)

python">import numpy as npx=np.arange(12).reshape(3,4)
print("x=",x)# 标准差
print("np.std(x)=",np.std(x))

x= [[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]
np.std(x)= 3.452052529534663

1.11 np.var(x)

python">import numpy as npx=np.arange(12).reshape(3,4)
print("x=",x)# 方差
print("np.var(x)=",np.var(x))

x= [[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]
np.var(x)= 11.916666666666666

1.12 np.average(x,weight)

python">import numpy as npx=np.arange(12).reshape(3,4)
print("x=",x)weight= np.random.randn(*x.shape)# np.np.average加权平均值
print("np.average(x,weight)=",np.average(x,weights=weight))

x= [[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]
np.average(x,weight)= 5.666459528596581

2、Numpy中axis参数的用途

其中

  • axis=0代表行,按行运算
  • axis=1代表列,按列运算

理解,axis=0代表把行消除,axis=1代表把列消除

python">import numpy as npx=np.arange(12).reshape(3,4)
print("x=",x)print("np.sum(x,axis=0)=",np.sum(x,axis=0))
print("np.sum(x,axis=1)=",np.sum(x,axis=1))

x= [[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]
np.sum(x,axis=0)= [12 15 18 21]
np.sum(x,axis=1)= [ 6 22 38]

3、 实例,将机器学习中的数据进行标准化

其中

  • 行 代表每个样本数据
  • 列 代表样本的属性值

为什么要进行标准化?

  • 对于机器学习中,不同列的量纲相同,则训练收敛的更快
  • 因为对于属性值来讲,如A属性是价格0-100元,B属性是销量100万+,因此这两个属性没有可比性,因此需要进行标准化
  • 不同的数字代表不同的特征,因此需要按行计算,即axis=0
  • 标准化公式为X=(X-mean(X,axis=0))/std(X,axis=0)
python">import numpy as npx=np.arange(12).reshape(3,4)
print("x=",x)print("标准化",(x-np.mean(x,axis=0)/np.std(x,axis=0)))

x= [[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]
标准化 [[-1.22474487 -1.22474487 -1.22474487 -1.22474487]
 [ 0.          0.          0.          0.        ]
 [ 1.22474487  1.22474487  1.22474487  1.22474487]]

可以看出每列之和的结果为0

此外,注意x是3*4的数组,而np.mean(x,axis=0)是1*4的数组,这两者是如何相减的呢,即array中的广播机制,把np.mean(x,axis=0)1*4的数组复制成3*4的数组,即把行复制3次进行相减的计算。


http://www.ppmy.cn/server/41801.html

相关文章

初识C++ · string的使用(2)

目录 1 Modifiers部分 1.1 assign的使用 1.2 insert的使用 1.3 erase的使用 1.4 replace的使用 2 capacity部分 2.1 max_size的使用 2.2 capacity的使用 2.3 reserve的使用 2.4 shrink_to_fit简介 2.5 resize的使用 2.6 clear的使用 3 String operations部分 3.1 …

C# 快速把List<string>集合转换成一个字符串

在C#中&#xff0c;要将List<string>类型的集合转换成一个单一的字符串&#xff0c;其中各元素由特定的分隔符连接&#xff0c;通常推荐使用String.Join()方法。 简单的示例&#xff1a; 使用for循环 代码如下&#xff1a; using System; using System.Collections.G…

【Golang】 MySQL 在 Go 语言驱动程序中常用参数

文章目录 前言一、参数解释二、代码实现四、总结 前言 在 Go 语言中&#xff0c;我们使用数据库驱动程序来连接和操作数据库。对于 MySQL&#xff0c;我们通常使用 go-sql-driver/mysql 驱动程序。在使用这个驱动程序时&#xff0c;我们需要提供一个数据源名称&#xff08;DSN…

react配置@指向src目录

一、在vite.config.ts中添加配置 import path from "path";// https://vitejs.dev/config/ export default defineConfig({plugins: [react()],resolve: {alias: {"": path.resolve(__dirname, "./src")}} });这时候引入的会path模块报红&#…

Chatgpt的应用场景

文案创作类&#xff1a; 作为一名大型语言模型&#xff0c;ChatGPT可以为使用者提供多种文本处理和文字创作方面的服务&#xff0c;例如&#xff1a; 文本生成和创作 ChatGPT可以基于您提供的主题、关键词或文本段落&#xff0c;生成符合使用者要求的新文本。这些文本可以是文…

如何让Linux系统崩溃?

如何使 Linux 系统崩溃 警告 下面的代码行是 Bash shell 的一个简短而甜蜜的 fork 炸弹。分叉炸弹之所以有效&#xff0c;是因为它能够产生无限数量的进程。最终&#xff0c;Linux无法处理所有这些&#xff0c;并且会崩溃。 fork 炸弹的一大优点是你不需要 root 权限即可执行它…

【devops】Linux 日常磁盘清理 ubuntu 清理大文件 docker 镜像清理

日常磁盘清理 1、查找大文件 find / -type f -size 1G2、清理docker无用镜像&#xff08;drone产生的残余镜像文件&#xff09; docker system prune -a一、清理服务器磁盘 1、查找大文件 在Ubuntu系统中&#xff0c;你可以使用find命令来查找大文件。find命令是一个强大的…

数据可视化的艺术:使用Matplotlib和Seaborn揭示数据故事

引言 数据可视化是数据分析中的关键一环&#xff0c;它帮助我们理解数据模式、趋势和异常。在Python中&#xff0c;Matplotlib和Seaborn是两个流行的数据可视化库&#xff0c;它们提供了丰富的图表和图形选项&#xff0c;使数据的可视化变得简单而强大。 Matplotlib&#xff…