Numpy:条件和

2023-11-23

我有以下 numpy 数组:

import numpy as np
arr = np.array([[1,2,3,4,2000],
                [5,6,7,8,2000],
                [9,0,1,2,2001],
                [3,4,5,6,2001],
                [7,8,9,0,2002],
                [1,2,3,4,2002],
                [5,6,7,8,2003],
                [9,0,1,2,2003]
              ])

我明白np.sum(arr, axis=0)提供结果:

array([   40,    28,    36,    34, 16012])

我想做的事(没有 for 循环) 根据最后一列的值对各列求和,以便提供的结果为:

array([[   6,    8,   10,   12, 4000],
       [  12,    4,    6,    8, 4002],
       [   8,   10,   12,    4, 4004],
       [  14,    6,    8,   10, 4006]])

我意识到没有循环可能会有点困难,但希望能得到最好的结果......

如果必须使用 for 循环,那么它如何工作?

I tried np.sum(arr[:, 4]==2000, axis=0)(我会用2000与 for 循环中的变量),但是它给出的结果是2


您可以在纯 numpy 中使用巧妙的应用程序来完成此操作np.diff and np.add.reduceat. np.diff将为您提供最右列发生变化的索引:

d = np.diff(arr[:, -1])

np.where将转换你的布尔索引d到整数索引np.add.reduceat期望:

d = np.where(d)[0]

reduceat还期望看到一个零索引,并且所有内容都需要移一:

indices = np.r_[0, e + 1]

Using np.r_这里比np.concatenate因为它允许标量。那么总和就变成:

result = np.add.reduceat(arr, indices, axis=0)

当然,这可以合并成一行:

>>> result = np.add.reduceat(arr, np.r_[0, np.where(np.diff(arr[:, -1]))[0] + 1], axis=0)
>>> result
array([[   6,    8,   10,   12, 4000],
       [  12,    4,    6,    8, 4002],
       [   8,   10,   12,    4, 4004],
       [  14,    6,    8,   10, 4006]])
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Numpy:条件和 的相关文章

随机推荐

  • 如何从嵌套类访问超类方法?

    我希望这段代码可以解释这个问题 class Foo void a stuff class Bar extends Foo void a throw new Exception This is not allowed for Bar clas
  • 如何使用 div 和 css 模拟表格?

    像这样的表 table tr td td td td td td tr tr td td td td td td tr table 如何使用 div 和 css display table 规则创建一个 尝试这个 CSS table dis
  • 具有多个值列的数据透视表/交叉表

    我有一个产生以下结果集的视图 CREATE TABLE foo AS SELECT client id asset type current value future value FROM VALUES 1 0 10 20 1 1 5 10
  • 如何在编写测试时检查实际的 Laravel 命令输出?

    我正在为 Laravel Artisan 控制台命令编写一个非常基本的测试 如下所示 this gt artisan my command some option gt some value gt expectsOutput the exp
  • 如何在 Airflow 中运行异步函数?

    我正在编写一个气流任务来读取大型 csv 并将其保存到 postgresql 数据库 我发现这个 asyncpg 包具有复制功能 其运行速度比任何其他包都要快得多 然而 它是异步的 我不知道如何将它合并到Airflow中 这是示例代码 fr
  • 检查 W10 上的 Windows 版本

    有谁知道 TOSVersion Name 是否仍然适用于 Windows 10 我有一个 vcl 应用程序 它有一个表单显示事件 该事件获取操作系统详细信息并使用 SysUtils 中的 TOSVersion 记录将它们显示在 TMemo
  • 为什么 Java 会产生这么多进程?

    我编写了一个 Java 服务器应用程序 在Debian 7 虚拟服务器 该应用程序本身工作得很好 但我注意到一些非常奇怪的事情 Issue 打电话后java Xmx200M jar CCU jar我希望看到一个 Java 进程运行我的CCU
  • richfaces suggestBox 将附加值传递给支持 bean

    使用 RichFaces 时suggestionBox如何从带有文本输入的页面传递多个 id 或值suggestionBox支持豆 即 显示所选州内的建议城市列表 这是我的autoComplete method public List lt
  • pandas groupby 计算列中零的数量

    我有一个数据框 例如 Date B C 20 07 2018 10 8 20 07 2018 1 0 21 07 2018 0 1 21 07 2018 1 0 如何计算每个日期每列的零值和非零值 使用 sum 对我没有帮助 因为它会将非零
  • 从Python中的基类继承namedtuple

    是否有可能生产一个namedtuple哪个继承自基类 我想要的是Circle and Rectangle are namedtuples 和 都是从公共基类 Shape 继承的 from collections import namedtu
  • 如何将实体框架添加到控制台应用程序(包含图像)

    I try to add entity framework to console application I press add new item and then then 然后我添加了代码 class Program static vo
  • Chrome 不支持 Service Worker (69.0.3497.81)

    我开始使用 PWA 渐进式网络应用程序 当我尝试检查 Chrome 浏览器是否支持 Service Worker 时 它总是返回 false 下面的代码我用于检查 Note 我使用的是 chrome 版本 69 0 3497 81 官方版本
  • 如何使用 python nltk 获取解析树?

    给出以下句子 The old oak tree from India fell down 如何使用 python NLTK 获得句子的以下解析树表示 ROOT S NP NP DT The JJ old NN oak NN tree PP
  • char four[4] = "四";该语句的正确语义是什么?

    int main void char four 4 four return 0 当编译为 C 程序时 G 会报告 xxx cpp 在函数 int main 中 xxx cpp 3 错误 字符数组的初始化字符串太长 编译 C 程序时 GCC
  • 如何在网页上制作pandas操作的进度条

    我已经在谷歌上搜索了一段时间 但无法找到一种方法来做到这一点 我有一个简单的 Flask 应用程序 它接受 CSV 文件 将其读入 Pandas 数据帧 将其转换并输出为新的 CSV 文件 我已经成功上传并使用 HTML 转换它 div c
  • 另一个围栏代码块内的围栏代码块

    我正在尝试写有关 Markdown 语法的文章 并且为了编写它 我使用 Markdown 所以 我的文档如下所示 Example of markdown code foo fenced code block fail bar lalala
  • AppFabric 缓存 - 我可以指定用于所有对象的序列化样式吗?

    实现某些自定义序列化的对象可以序列化和反序列化为不同的格式 例如 Xml 或 byte 我遇到了一个问题 当我放入缓存时 AppFabric 在类上运行 IXmlSerialized 实现 而我宁愿强制它使用二进制文件 AppFabric
  • 如何使用 adb 卸载所有 3rd 方用户应用程序?

    我正在尝试创建一个脚本 该脚本将通过以下方式在一次批量操作中检索和卸载所有用户应用程序adb 有谁知道我怎样才能做到这一点 我目前可以通过以下方式列出所有 3rd 方应用程序 adb shell pm list packages 3 我可以
  • 我如何知道图片何时加载到 Picturebox 中

    我有一些巨大的图像 7000 5000 要在我的程序中同时加载 我将它们一张一张地显示在图片框中 这些图像需要一些时间才能加载到图片框 首先 我将所有图像加载到Image数组为Bitmap 然后我只显示图片框中的第一张图像picturebo
  • Numpy:条件和

    我有以下 numpy 数组 import numpy as np arr np array 1 2 3 4 2000 5 6 7 8 2000 9 0 1 2 2001 3 4 5 6 2001 7 8 9 0 2002 1 2 3 4 2