python - IndexError:Python 升级后布尔数组不再匹配
问题描述
我有代码在 for 循环中运行。
对于循环的每次迭代,我找到我的 DataFrame 的那一行的最大值,然后创建一个列索引列表,其中出现该值(因为它有时可能出现不止一次),最后我取这个的 max() list 为包含最大值的行提供最高列索引。
我使用的代码如下所示:
index = 0
for i in df['column']:
maxValue = df.values[index, :].max()
peaklist = df.index[df.values[index, :] == maxValue].tolist()
lastpeak = max(peaklist)
index += 1
更新我的 Python 后(我认为这就是原因),我的“峰值列表”创建现在失败,出现 IndexError 说“布尔索引与维度 0 上的索引数组不匹配;维度是 'x' 但相应的布尔维度是 'y'”
我在论坛上查看了其他实例,似乎找不到一个简单的单行解决方案来重写我的代码并获得与以前相同的结果。任何人都可以帮忙吗?
编辑
示例数据框:
0 1 2 3 4 5 6 7
a 100 200 200 150 100 125 200
b
c
d
e
对于本例中的第一次迭代,“maxValue”将等于 200,创建的“peaklist”将是 [2,3,7],“lastpeak”将等于 7。
解决方案
找到了解决方案,显然 numpy tuple 方法有效:
peaklist = np.where(df.values[index, :] == maxValue)
lastpeak = max(max(peak))
我将把这个问题搁置几天,希望有人有更好的方法或对问题的真正原因作出解释。
推荐阅读
- javascript - 仅显示那些不在反应中的另一个数组中的元素
- ruby - 如何在我的 Ruby 代码中修复这个隐式错误
- ios - ionic ios build wkwebview 无法启动,卡在启动画面
- c# - Netsuite:如何将采购订单链接到销售订单
- itext7 - 阅读pdf I text7时解码Identity-h嵌入字体文本
- javascript - Angular 9 onclick 功能未定义
- node.js - 无服务器框架无法识别 tsconfig 的路径
- php - 在 PHP 7.4+ 中,当父/超类的参数无类型时,相反的参数是否有意义?
- reactjs - 将道具从页面传递到 Nextjs 中的组件
- qt - 在 QT 的 Signals & Slots 字段中,当我在“实时”中求解动态方程时,我应该在连接命令中输入什么信号?