Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >numpy python:为另一列中的每个唯一值从列中找到最高值

numpy python:为另一列中的每个唯一值从列中找到最高值
EN

Stack Overflow用户
提问于 2017-02-01 13:57:56
回答 1查看 481关注 0票数 3

有人能建议一种有效的方法来为另一列中的每一个唯一值求出最高的值吗?

np.array看起来像column0,column1,column2,column3

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[[ 37367    421    231385     93]
 [ 37368    428    235156     93]
 [ 37369    408    234251     93]
 [ 37372    403    196292     93]
 [ 55523    400    247141    139]
 [ 55575    415    215818    139]
 [ 55576    402    204404    139]
 [ 69940    402    62244     175]
 [ 69941    402    38274     175]
 [ 69942    404    55171     175]
 [ 69943    416    55495     175]
 [ 69944    407    90231     175]
 [ 69945    411    75382     175]
 [ 69948    405    119129    175]] 

其中,我希望根据第3列的唯一值返回第1列的最高值。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[[ 37368    428   235156     93]
 [ 55575    415   215818    139]
 [ 69943    416    55495    175]] 

我知道如何通过循环来做这件事,但这不是我要处理的,因为我正在工作的桌子很大,我想避免循环。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-01 14:11:04

这里有一个方法-

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# Lex-sort combining cols-1,3 with col-3 setting the primary order
sidx = np.lexsort(a[:,[1,3]].T)

# Indices at intervals change for column-3. These would essentially 
# tell us the last indices for each group in a lex-sorted array
idx = np.append(np.flatnonzero(a[1:,3] > a[:-1,3]), a.shape[0]-1)    

# Finally, index into idx with lex-sorted indices to give us 
# the last indices in a lex-sorted version, which is equivalent 
# of picking up the highest of each group
out = a[sidx[idx]]

样本运行-

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
In [234]: a  # Input array
Out[234]: 
array([[ 25,  29,  19,  93],
       [ 27,  59,  14,  93],
       [ 24,  46,  15,  93],
       [ 79,  87,  50, 139],
       [ 13,  86,  32, 139],
       [ 56,  25,  85, 142],
       [ 62,  62,  68, 142],
       [ 27,  25,  20, 150],
       [ 29,  53,  71, 150],
       [ 64,  67,  21, 150],
       [ 96,  57,  73, 150]])

In [235]: out    # Output array
Out[235]: 
array([[ 27,  59,  14,  93],
       [ 79,  87,  50, 139],
       [ 62,  62,  68, 142],
       [ 64,  67,  21, 150]])

使用视图提高性能

我们可以使用a[:,1::2]而不是a[:,[1,3]]来使用相同的内存空间,从而也有望带来性能的提高。让我们验证一下内存视图-

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
In [240]: np.may_share_memory(a,a[:,[1,3]])
Out[240]: False

In [241]: np.may_share_memory(a,a[:,1::2])
Out[241]: True
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41990566

复制
相关文章
让控件填满整个页面
一般用于左侧的Frame,比如左侧放了一个树控件。用<body onload="FillPage('FlyTreeView1')" scroll=no>调用即可。     <script language="javascript" type="text/javascript">       //将ctlid控件填充满当前的页面,多用于frame中       function FillPage(ctlid)       {         var obj=document.getElementById(ct
用户1075292
2018/01/23
9470
让ZeGraph在X方向上填满
默认的效果是 希望能够在x方向上填满,两边不留。尝试出来的方法是:用zg1.GraphPane.XAxis.Scale.Max 和Min来设置,而且必须在画完图后设置。 zg1.GraphPane.C
用户1075292
2018/01/23
4840
让ZeGraph在X方向上填满
wpf wrapPanel居中并从左到右排列
参考文章.net – WPF – 如何将WrapPanel中的所有项目居中? – Thinbug
全栈程序员站长
2022/09/15
3760
Lua游戏开发参考资料收集
List of game engines that use lua: 2D Agen (Lua; Windows) Blitwizard (Lua; Windows, Linux, Mac) Cocos2d-x (C++/Lua/JS; Windows, Linux, Mac; iOS/Android/BlackBerry) Corona (Lua; Windows, Mac; iOS/Android) EGSL (Pascal/Lua; Windows, Linux, Mac, Haiku) G
meteoric
2018/11/19
8820
Video里的poster填满窗口的方案
用Video播放视频,视频能自适应屏幕大小,但是它的Poster(海报封面)继承了原尺寸比例,无法自动缩放或拉伸,不得技巧的话,很难处理。
IT晴天
2018/08/20
2K0
VUE.DRAGGABLE实现从左到右拖拽功能
1、左边【一级、二级、三级】字样是不能拖拽的,【item1、item2…】可以拖拽
青梅煮码
2023/03/02
1.2K0
设置图片的透明度从左到右渐变
一、设置图片的透明度从左到右渐变 /** * 设置图片的透明度从左到右渐变,使右边缘平滑过渡(注意只跟着x坐标变) * * @param num 范围为0-100,0为全透明,100为不透明 */ public static Bitmap getTransAlphaBitmap(Bitmap sourceImg, float num) { if (sourceImg == null) { return null;
用户9854323
2022/06/25
1.8K0
Excel小技巧40:自动填满单元格
在Excel中,可以使用你已经输入到单元格中的数据填满整个单元格,并且会随着单元格尺寸的调整而自动填充,如下图1所示。
fanjy
2020/06/28
3K0
Excel小技巧40:自动填满单元格
15种手机游戏引擎和开发工具介绍
工欲善其事,必先利其器。对移动游戏开发者来说,高效实用的开发工具必不可少。近日,英国著名产业杂志《Develop》刊出了一篇文章,作者艾伦·李在文中推荐了15种移动游戏开发工具,从游戏引擎,到音效制作、推广等工具都有涉及。以下为原文主要内容编译。
全栈程序员站长
2022/08/31
3.3K0
15种手机游戏引擎和开发工具介绍
RPA 实战:让小姐姐填满你的硬盘(上)
首先打开另一个小网站 -- https://www.hwtelcloud.com/products/rpa,下载【设计器】,并进行使用激活;下载【执行器】,让程序自己动;此外还需下载浏览器驱动和安装浏览器插件。关于软件的下载安装等此处就不进行讲解,相信您能搞定!
胡琦
2021/09/09
2K1
7个最优秀的手机游戏引擎
随着智能手机成为主要的游戏平台,移动游戏引擎变得越来越流行。 下面将介绍7个最优秀的手机游戏引擎。
全栈程序员站长
2022/09/06
5.5K0
设计分享|基于单片机的从左到右流水灯
51单片是一种低功耗、高性能CMOS-8位微控制器,具有8K可编程Flash存储器,使得51系列单片机为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
电子工程师成长日记
2022/08/09
1.1K0
设计分享|基于单片机的从左到右流水灯
设计分享|基于单片机的从左到右流水灯
51单片是一种低功耗、高性能CMOS-8位微控制器,具有8K可编程Flash存储器,使得其为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
电子工程师成长日记
2022/12/14
8840
设计分享|基于单片机的从左到右流水灯
Platform SDK、Windows SDK简介
Platform SDK及Windows SDK是由微软公司出品的一个软件开发包,向在微软的Windows操作系统和.NET框架上开发软件和网站的程序员提供头文件、库文件、示例代码、开发文档和开发工具。
全栈程序员站长
2022/09/05
3.8K0
Java开发SDK详解->SDK开发
File ——》 Project Structure ——》 Project Settings ——》 Artifacts ——》 右栏左上角+ ——》JAR ——》 From Modules with dependencies——》OK
全栈程序员站长
2022/09/08
5.6K0
填满Github的绿色格子用我做的VSCode插件-Auto Commit
如果提交到其他分支,提交记录不会显示在绿色的格子里面,合并分支之后 才会显示在绿色格子里面。
OBKoro1
2020/10/27
1.4K0
填满Github的绿色格子用我做的VSCode插件-Auto Commit
SDK之我理解的SDK
这是SDK系列的倒数第二篇,其实应该是第一篇来着。最近发现写了两个月还没写完,进度有点慢,这几天抓紧时间写完。不过随即发现当时完全没想错,这部分还是最难写。先写一个成稿,后续想到更多的内容逐步补充和更新吧。 什么是SDK SDK即软件开发工具包(外语首字母缩写:SDK、外语全称:Software Development Kit)一般都是一些被软件工程师用于为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件的开发工具的集合。 ​上面这是百度百科对SDK的定义。但是现实中我们开发的SDK更多的是Seco
子勰
2018/05/22
2.7K0
[大家的项目] alipay_sdk_rust,Alipay sdk in rust 支付宝支付 SDK
alipay官方没有rust sdk,本人自己实现了一个,已经生产环境可用。基于gostd的http模块。
MikeLoveRust
2022/11/28
1.7K0
[大家的项目] alipay_sdk_rust,Alipay sdk in rust 支付宝支付 SDK
教你如何填满过去一年的Github的绿色格子-Auto Commit
如果提交到其他分支,提交记录不会显示在绿色的格子里面,合并分支之后 才会显示在绿色格子里面。
OBKoro1
2020/01/13
3.6K0
点击加载更多

相似问题

corona sdk scrollableView

12

Corona SDK旋转

11

Corona sdk + xmpp

12

ScreenShot (CORONA SDK)

22

Corona SDK SplashScreen

14
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文