栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python实现多数组逻辑运算

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python实现多数组逻辑运算

Python实现多数组逻辑运算
  • MATLAB代码
  • (错误的)Python代码一
  • (错误的)Python代码二
  • (可行的)Python代码
  • 其他

by 今天不飞了

近日将MATLAB代码改写为Python时遇到一个小麻烦,如正文


MATLAB代码

原题较复杂,简化后大致需求如下

% 已知
a = [1,2,3,4,5]
b = [5,4,3,2,1]
c = [3,2,3,2,3]
% 求
data = [6,6,6,6,6]
newdata = data(a>2 & b>2 & c>2)

唯一的改写问题就在于索引a>2&b>2&c>2,如何在python中实现,侯文中省去其他代码,仅写这一行


(错误的)Python代码一

试图直接用,

newdata = data[a>2 & b>2 & c>2]

报错……
那我改成英文,

newdata = data[a>2 and b>2 and c>2]

就离谱……


(错误的)Python代码二

听说有个np.where,

newdata = data[np.where(a>2 & b>2 & c>2)]

额,换汤不换药……


(可行的)Python代码

for循环永远的神,但……写循环是不可能写的
试了一会发现np.where(logical,1,0)的结果支持逻辑运算,那就,

idx = np.where(a>2,1,0) & np.where(b>2,1,0) & np.where(c>2,1,0))
newdata = data[idx>0]

感觉有点复杂,但是能用就行了……
然后又发现了第二种,仅适用于“与”运算

idx = (a>2) * (b>2) * (c>2)
newdata = data[idx]

清爽不少


其他

求更简便的方法,但……写循环是不可能写的

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/344329.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号