numpy_ndarray的矩阵运算
发表于:2025-02-19 作者:千家信息网编辑
千家信息网最后更新 2025年02月19日,ndarry的矩阵运算数组是编程中的概念,矩阵、矢量是数学概念在计算机编程中,矩阵可以用数组形式定义,矢量可以用结构定义1. 矢量运算:相同大小的数组间运算应用在元素上示例代码(1):# 矢量与矢量运
千家信息网最后更新 2025年02月19日numpy_ndarray的矩阵运算
ndarry的矩阵运算
数组是编程中的概念,矩阵、矢量是数学概念
在计算机编程中,矩阵可以用数组形式定义,矢量可以用结构定义
1. 矢量运算:相同大小的数组间运算应用在元素上
示例代码(1):
# 矢量与矢量运算arr = np.array([[1, 2, 3], [4, 5, 6]])print("元素相乘:")print(arr * arr)print("矩阵相加:")print(arr + arr)
运行结果:
元素相乘:[[ 1 4 9] [16 25 36]]矩阵相加:[[ 2 4 6] [ 8 10 12]]
- 矢量和标量运算:"广播" - 将标量"广播"到各个元素
# 矢量与标量运算print(1. / arr)print(2. * arr)
运算结果:
[[ 1. 0.5 0.33333333] [ 0.25 0.2 0.16666667]][[ 2. 4. 6.] [ 8. 10. 12.]]
ndarray的索引与切片
- 一维数组的索引与切片
与Python的列表索引功能相似
示例代码(1):
# 一维数组arr1 = np.arange(10)print(arr1)print(arr1[2:5])
运行结果:
[0 1 2 3 4 5 6 7 8 9][2 3 4]
- 多维数组的索引与切片
arr[r1:r2, c1:c2]
arr[1,1]等价arr[1][1]
[:]代表某个维度的数据
示例代码(2):
# 多维数组arr2 = np.arange(12).reshape(3, 4)print(arr2)print(arr2[1])print(arr2[0:2, 2:])print(arr2[:, 1:3])
运行结果:
[[ 0 1 2 3] [ 4 5 6 7] [ 8 9 10 11]][4 5 6 7][[2 3] [6 7]][[ 1 2] [ 5 6] [ 9 10]]
- 条件索引
布尔值多维数组:arr[condition], condition也可以是多个条件组合。
注意,多个条件组合要使用& |连接,而不是Python的 and or。
示例代码(3):
# 条件索引# 找出 data_arr 中 2005年后的数据data_arr = np.random.rand(3, 3)print(data_arr)year_arr = np.array([[2000, 2001, 2000], [2005, 2002, 2009], [2001, 2003, 2010]])is_year_after_2005 = year_arr >= 2005print(is_year_after_2005, is_year_after_2005.dtype)filtered_arr = data_arr[is_year_after_2005]print(filtered_arr)#filtered_arr = data_arr[year_arr >= 2005]#print(filtered_arr)# 多个条件filtered_arr = data_arr[(year_arr <= 2005) & (year_arr % 2 == 0)]print(filtered_arr)
运行结果:
[[ 0.53514038 0.93893429 0.1087513 ] [ 0.32076215 0.39820313 0.89765765] [ 0.6572177 0.71284822 0.15108756]][[False False False] [ True False True] [False False True]] bool[ 0.32076215 0.89765765 0.15108756]#[ 0.32076215 0.89765765 0.15108756][ 0.53514038 0.1087513 0.39820313]
ndarray的维数转换
二维数组直接使用转换函数:transpose()
高维数组转换要指定维度编号参数(0,1,2,……),注意参数是元组
示例代码:
arr = np.random.rand(2, 3) # 2*3 数组print(arr)print(arr.transpose()) # 转换为 3*2 数组arr3d = np.random.rand(2, 3, 4) # 2*3*4数组,2对应0, 3对应1,4对应2print(arr3d)print(arr3d.transpose((1, 0, 2))) # 根据维度编号,转换为3*2*4数组
运行结果:
# 高维数组转换# 转换前:[[[ 0.91281153 0.61213743 0.16214062 0.73380458] [ 0.45539155 0.04232412 0.82857746 0.35097793] [ 0.70418988 0.78075814 0.70963972 0.63774692]] [[ 0.17772347 0.64875514 0.48422954 0.86919646] [ 0.92771033 0.51518773 0.82679073 0.18469917] [ 0.37260457 0.49041953 0.96221477 0.16300198]]]# 转换后:[[[ 0.91281153 0.61213743 0.16214062 0.73380458] [ 0.17772347 0.64875514 0.48422954 0.86919646]] [[ 0.45539155 0.04232412 0.82857746 0.35097793] [ 0.92771033 0.51518773 0.82679073 0.18469917]] [[ 0.70418988 0.78075814 0.70963972 0.63774692] [ 0.37260457 0.49041953 0.96221477 0.16300198]]]
数组
运算
矢量
索引
结果
矩阵
代码
条件
示例
运行
元素
多个
标量
维度
多维
参数
数据
概念
高维
一维
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
英灵神殿如何连接服务器
数据库宠物系统数据表
方方格子软件开发商
网络安全基础知识测试题
网络安全管理考试内容
正确的网络安全观 思政
tsql语句建立数据库
北京什么是网络技术推广
怎样删除服务器上的qq聊天记录
文件服务器怎么管理软件
数据库 数据加密
2020最先进的网络技术
软件开发项目进度管理
朝阳区智能网络技术服务排名靠前
禹州软件开发公司
2020国家网络安全宣传周答案
结合转录数据库
软件开发云技术
深圳智能照明软件开发中心
采购erp软件开发设计
什么是网络安全手册
数据库宠物系统数据表
戴尔服务器如何进入管理口
windows数据库要钱吗
宝山区工程网络技术
堡垒机连接数据库后怎么使用
邮储软件开发面试题
软件开发云技术
如何监管学校网络安全
南京技术管理软件开发平台