numpy_ndarray的矩阵运算
发表于:2025-01-24 作者:千家信息网编辑
千家信息网最后更新 2025年01月24日,ndarry的矩阵运算数组是编程中的概念,矩阵、矢量是数学概念在计算机编程中,矩阵可以用数组形式定义,矢量可以用结构定义1. 矢量运算:相同大小的数组间运算应用在元素上示例代码(1):# 矢量与矢量运
千家信息网最后更新 2025年01月24日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安全错误
数据库的锁怎样保障安全
华为有软件开发部门吗
数据库及数据工具
院系网络安全管理制度
数据库批量查询6
教师网络技术培训班
8k直播云服务器性能计算
ubuntu 服务器管理
中国科技经济新闻数据库怎么查询
智邮网络技术有限公司
北京软件开发培训收费标准
网络安全宣传组长
系统集成开发与网络安全
数据库数据修改
小白学网络安全应该先学什么
va屏软件开发
mysql数据库缓存
dell 服务器 管理口
陕西淘麦网络技术公司
世界互联网科技发源地成语
软件开发培训协议书范本
打印机云服务器连接受限
数据库tldb
秋米网络技术北京有限公司
邯郸办公系统软件开发哪家可靠
重庆软件开发创业合伙人
二手网吧游戏服务器出售
奥伯莱恩裂魂之剑数据库
软件开发poc是什么来的
中小学生网络安全培训
护苗网络安全化