numpy03:numpy广播机制,花式索引取值,统计方法,数组的拆分与合并,线性代数方法

devtools/2024/9/23 21:09:40/

numpy广播机制

import numpy as nparr1 = np.arange(24).reshape(4, 6)
print(arr1)print(arr1 + 2)  # 数组中的每一个元素都会进行运算arr2 = np.arange(100,124).reshape(4,6)
print(arr2)# 两个数组相加  --》形状相同,数组索引对应的元素会进行相加
print(arr1 + arr2)# 一维数组  --》形状不同,行也不同,列相同
arr3 = np.arange(0,6)
print(arr3)
print(arr2-arr3)# 行相同,列不同
arr4 = np.arange(0,4).reshape(4,1)
print(arr4)
print(arr2-arr4)
# 当两个数组行或者列不相同的时候(必须要有一个相同),就会出现广播机制运算
# 进行拆分,如果是行相同,就逐行运算,如果是列相同,就逐列运算

花式索引取值

import numpy as np# 一维数组
arr1 = np.random.random(12)
print(arr1)# 目标是一维数组,索引的结果就是对应的元素
index1 = np.array([0, 7, 9])
print(arr1[index1])# 二维数组
index2 = np.array([[2,4,6],[7,9,0]],dtype=np.int32)
print(index2)
print(arr1[index2])
# 根据index2中的每一个元素,去获取到arr1中的相应的数据,但是不改变维度(2行3列的二维数组)

统计方法

import numpy as np# 3行4列的二维数组
arr1 = np.arange(11,23).reshape(3,4)
print(arr1)# 最大值
print(arr1.max())  # 方法1:直接对象点上方法
print(np.max(arr1))  # 方法2:numpy点上方法,里面传入数组对象# 最小值
print(arr1.min())print(arr1[1].max())  # 针对第二行提取最大值
print(arr1[1].min())  # 针对第二行提取最小值
print(arr1[:, 0].max())  # 针对第一列提取最大值
print(arr1[:, 0].min())  # 针对第一列提取最小值# 最大值索引   ,索引值是降维以后的索引值
print(arr1.argmax())
# 最小值索引
print(arr1.argmin())# 计算总和,默认针对所有元素进行求和运算
print(arr1.sum())print(arr1.sum(axis=1))  # 行求和
print(arr1.sum(axis=0))  # 列求和# 计算第2列的总和
print(arr1[:,1].sum())# 平均值:将所有元素加起来,除以元素个数
print(arr1.mean())print(arr1.mean(axis=1))  # 行平均值
print(arr1.mean(axis=0))  # 列平均值# 累加的和
print(arr1.cumsum())# 累乘的和
print(arr1.cumprod())"""
方差 统计的方法是 每个样本值 与 全体样本值 的平均数之差 的平方值的平均值mean((x-x.mean())**2)
"""
print(np.var([1, 2, 3, 4]))  # mean = 2.5
# (1-2.5)**2  (2-2.5)**2"""标准差是方差的一个算数平方根std = sqrt(mean((x-x.mean())**2)
"""
print(np.std([1,2,3,4]))
print(np.sqrt(np.var([1,2,3,4])))

数组的拆分与合并

import numpy as nparr1 = np.random.randint(0, 10, (3, 12))
print(arr1)# 拆分
# hsplit()  垂直拆分 ↓
print(np.hsplit(arr1, 4))  # 垂直拆分成3个平均的数组a1, a2, a3, a4 = np.hsplit(arr1, 4)
print(a1)# 指定拆分
print(np.hsplit(arr1, (3, 4)))  # 在指定的索引位置进行拆分# vsplit()  水平拆分  ->arr2 = np.random.randint(0, 10, (6, 3))
print(arr2)# 水平拆分,切分成两个平均的二维数组
print(np.vsplit(arr2, 2))# 数组合并
# hstack  水平合并
# vstack  垂直合并
arr3 = np.random.randint(0, 10, (2, 2))
arr4 = np.random.randint(0, 10, (2, 2))
print(arr3)
print(arr4)# 水平合并成两行四列的二维数组
print(np.hstack(tup=(arr3, arr4)))
# 垂直合并成一个4行2列的二维数组
print(np.vstack(tup=(arr3, arr4)))

线性代数方法

import numpy as np# 创建两个二维数组
arr1 = np.array([[1, 2], [3, 4]])
arr2 = np.array([[11, 12], [13, 14]])
print(arr1)
print(arr2)
)
# 数组的点积运算 np.dot
print(np.dot(arr1, arr2))
"""
将arr1的每一行与arr2的每一列进行对应元素的相乘,且相加
1*11+2*13 = 37
1*12 +2*14 = 40
3*11+4*13 = 85
3*12+4*14 = 92
"""# 向量的点积运算 np.vdot
print(np.vdot(arr1, arr2))
"""
将数组展开成一维数组,进行索引元素内积,且相加
1*11+2*12+3*13+4*14 = 130
"""# 数组元素内积  np.inner
a = np.array([1, 2, 3])
b = np.array([0, 1, 0])
print(np.inner(a, b))  # 1*0+2*1+3*0  = 2# 二维元素
arr1 = np.array([[1, 2], [3, 4]])
arr2 = np.array([[11, 12], [13, 14]])
print(np.inner(arr1, arr2))
"""
数组对应元素的内积
1*11+2*12 = 35
1*13 +2*14 = 41
3*11+4*12 = 81
3*13+4*14 = 95
"""

http://www.ppmy.cn/devtools/108386.html

相关文章

98.WEB渗透测试-信息收集-Google语法(12)

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 内容参考于: 易锦网校会员专享课 上一个内容:97.WEB渗透测试-信息收集-Google语法(11) 3、找注入页面&#xf…

免费SSL证书怎么申请?

申请SSL证书通常遵循以下四个简洁明了的步骤,确保过程条理清晰且高效: 第一步:选择证书类型与颁发机构 首先,根据您的网站需求选择合适的SSL证书类型,如域名验证型(DV)、组织验证型&#xff08…

linux autofs配置

安装 yum install -y autofs 准备挂接目录 mkdir /nfsdata mkdir /nfsdata/{tools,files} 添加配置 echo “/nfsdata /etc/auto.user” >> /etc/auto.master echo “tools -fstypenfs,rw,sync,no_root_squash 172.23.0.187:/mnt/sdb1/tools” >> /etc/auto.us…

MATH36022 Numerical Analysis 2 Numerical Solution of ODEs – Week 11 Exercises

MATH36022 Numerical Analysis 2 Numerical Solution of ODEs – Week 11 Exercises Consider the implicit midpoint method y n + 1 = y n + h

【springboot】使用缓存

目录 1. 添加依赖 2. 配置缓存 3. 使用EnableCaching注解开启缓存 4. 使用注解 1. 配置缓存名称 2. 配置缓存的键 3. 移除缓存 5. 运行结果 1. 添加依赖 <!-- springboot缓存--><dependency><groupId>org.springframework.boot</groupId>…

SVN介绍和使用

一、SVN&#xff08;Subversion&#xff09; SVN 是一种版本控制系统&#xff0c;可以用于管理和控制文件的变更。以下是SVN的基本使用步骤&#xff1a; 安装SVN&#xff1a;首先&#xff0c;您需要在计算机上安装SVN客户端。您可以从Subversion官方网站下载安装程序&#xff…

javase笔记3----正则表达式

正则表达式 简介 正则表达式&#xff08;Regular Expressions&#xff09;&#xff0c;是一个特殊的字符串&#xff0c;可以对普通的字符串进行校验检测等工作&#xff0c;校验一个字符串是否满足预设的规则。 基本语法 字符集合 [] : 表示匹配括号里的任意一个字符。 [abc] …

本地电脑交叉编译ffmpeg 到 windows on arm64

本地电脑交叉编译ffmpeg 到 windows on arm64 我这里有编译好的win on arm 的 ffmpeg : https://github.com/wmx-github/ffmpeg-wos-arm64-build 使用 llvm-mingw 工具链 https://github.com/mstorsjo/llvm-mingw/releases 前缀 aarch64-w64-mingw32- 这个库是ubuntu 交叉编译…