numpy.any(axis=i) 用于 scipy.sparse

2024-03-08

import numpy
a = numpy.array([
    [0, 1, 0, 0],
    [1, 0, 0, 0],
    [0, 0, 1, 0],
    [0, 0, 0, 0],
    [0, 0, 0, 0],
])
numpy.any(a, axis=0)
numpy.any(a, axis=1)

produces

array([ True,  True,  True, False])
array([ True,  True,  True, False, False])

然而,之后

from scipy import sparse
a = sparse.csr_matrix(a)

相同numpy.any(a, axis)调用产生

<5x4 sparse matrix of type '<class 'numpy.intc'>'
        with 3 stored elements in Compressed Sparse Row format>

and

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<__array_function__ internals>", line 5, in any
  File "C:\Users\user\.conda\envs\py385\lib\site-packages\numpy\core\fromnumeric.py", line 2330, in any
    return _wrapreduction(a, np.logical_or, 'any', axis, None, out, keepdims=keepdims)
  File "C:\Users\user\.conda\envs\py385\lib\site-packages\numpy\core\fromnumeric.py", line 87, in _wrapreduction
    return ufunc.reduce(obj, axis, dtype, out, **passkwargs)
numpy.AxisError: axis 1 is out of bounds for array of dimension 0

当然,a实际上是一个很大的稀疏矩阵,需要转换为普通矩阵numpy数组不是一个选项。我怎样才能获得相同(或等效)的结果csr_matrix和别的scipy.sparse矩阵?

ADDED:

根据scipy 官方文档中的使用信息 https://docs.scipy.org/doc/scipy/reference/sparse.html#usage-information,

尽管它们与 NumPy 数组相似,但它是强烈劝阻直接在这些矩阵上使用 NumPy 函数,因为 NumPy 可能无法正确转换它们进行计算,从而导致意外(且不正确)的结果。如果您确实想将 NumPy 函数应用于这些矩阵,请首先检查 SciPy 是否有针对给定稀疏矩阵类的自己的实现,或者将稀疏矩阵转换为 NumPy 数组(例如,使用数组()类的方法)首先在应用该方法之前。

我正在寻找“它自己的实现”或同等内容。


您可以使用 sum 代替 bool 数组上的任何值

import numpy
a = numpy.array([
    [0, 1, 0, 0],
    [1, 0, 0, 0],
    [0, 0, 1, 0],
    [0, 0, 0, 0],
    [0, 0, 0, 0],
])

from scipy import sparse
a = sparse.csr_matrix(a.astype(bool))
# Use sum instead of any on a bool array
print(a.sum(axis=0).astype(bool))
print(a.sum(axis=1).flatten().astype(bool))

output:

[[ True  True  True False]]
[[ True  True  True False False]]

如果你想做“所有”,那会有点棘手,因为 scipy 似乎没有“prod”的实现。 但这个帖子 https://stackoverflow.com/questions/44320865/scipy-equivalent-of-numpy-prod-for-sparse-matrices有这个案例的答案。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

numpy.any(axis=i) 用于 scipy.sparse 的相关文章

随机推荐

  • 如何模拟从不同模块导入的方法中导入的函数[重复]

    这个问题在这里已经有答案了 我有以下功能要测试 my package db engine db functions py from utils import execute cmd from my package db engine db
  • 使用jquery获取facebox div内元素的值

    我的页面上有两个 div 标签 如下所示 当我引用 itemName 元素的值时 使用 itemName val 我在两个 div 中都有 我总是得到第一个 div 中元素的值 即 空白 有没有办法使用 jquery 获取第二个 div 中
  • 在所有地址上运行我自己的用户脚本有风险吗?

    Tampermonkey 对于大多数浏览器 和 Greasemonkey 对于 Firefox 都支持 match and include指令 当我开始阅读它们之间的区别时 结果发现 match有点严格 用户脚本不会在某些地址上启动 这可能
  • 如何获得具有固定总和和大小的随机数列表

    如何根据给定大小和期望总和获取随机数列表 完全支持 i hava a code sum int ts https github com bluelovers random blob master src distributions sum
  • IronPython 3 兼容性

    我喜欢Python语言 主要使用标准CPython 3 版本来进行简单的脚本编写和作为算法沙箱 有时我需要 NET集成 所以我使用IronPython 它现在是2 7版本 我更喜欢 3 因此不愿意使用旧的 2 7 有没有关于何时发布以及迁移
  • kusto now() 函数在单个查询中返回相同的值

    我正在尝试检测 kusto 函数的一部分来检查不同场景下的执行时间 但是我找不到打印前后时间的方法 print now
  • Heroku 上的 Django 与 PostgreSQL 应用程序不同步

    我正在尝试按照以下教程在 Heroku 上运行 Django Heroku 上的 Django 入门 https devcenter heroku com articles django 一切都运行良好 直到我到达syncbd部分 同步数据
  • java中的递归方法记忆化

    我正在做家庭作业 我已经筋疲力尽了 我是编程新手 这是我的第一堂编程课 这就是问题 考虑 Collat z java 中的以下递归函数 它与数论中一个著名的未解决问题 称为 Collat z 问题或 3n 1 问题 相关 public st
  • 动态组件的 Angular i18n 翻译

    我已经阅读了大量有关 Angular 2 i18n 的文章 并且一直在寻找尝试构建动态组件的最佳方法 问题 i18n 无法将变量文本转换为动态 xlf 文件 i18n 使得使用 i18n 属性创建带有文本的动态组件变得困难 可能的解决方案
  • 尝试在已经呈现的视图控制器上呈现 UIAlertController (null) [Swift]

    我有一个警报视图 试图在照片视图上呈现 照片显示在列表中 并且可以推送到全屏视图 照片视图正在以编程方式显示 我认为这就是导致问题的原因 因为警报视图试图在已经呈现的 照片 视图之上呈现另一个视图 警报视图正在尝试显示 但出现此错误 War
  • 如何接收USB连接状态广播?

    我正在尝试在我的应用程序中检测 USB 连接 即 USB 是否连接到设备 它正在 Marshmallow 6 0 1 sdk23 上进行测试 但我无法接收广播操作 ACTION USB DEVICE ATTACHED 或 ACTION US
  • 是什么导致 Java 中的旋转和同步时间过长?

    在 Java 8 Update 45 中 将这些选项添加到java call XX PrintGCApplicationStoppedTime XX PrintSafepointStatistics XX PrintSafepointSta
  • 替换 Apache POI 中的表列值

    我正在使用 Apache POI 3 7 我正在尝试替换Word文档 docx 中表列的值 但是 我所做的是它不断附加文档中当前值的值 但如果表列值为空 则会放置该值 你能给我一些如何解决这个问题的想法吗 下面是我到目前为止所做的代码 提前
  • 如何在 Eclipse 中使用“ADT 21.0.1”为 Android 模拟器安装皮肤(来自三星)?

    如何在 Eclipse 中使用 ADT 21 0 1 为 Android 模拟器安装皮肤 来自三星 我可以用 ADT 16 0 1 做到这一点 我使用了三星 Galaxy S2 的皮肤http developer samsung com a
  • R数组取子集:灵活使用drop

    正如已注意到的那样R数组取子集 长度为1时维度丢失 https stackoverflow com questions 12755397 subsetting r array dimension lost when its length i
  • 多用户共享Excel文件并自动刷新

    关于让共享 Excel 文件自动刷新有什么建议吗 我们需要 3 个用户来处理文件服务器上的 Excel 文件 一名用户将进行更改 其他人是只读的 但他们必须尽快看到更改 有关如何执行此操作的任何指示 在您的 Excel 文件中 您需要启用工
  • Fetch API 和 Axios 是否将 304 响应视为 200?

    我不知道是否会这样 但是如果我的服务器以 HTTP 状态代码 304 响应 Fetch API 特别是response ok and axios get 看到响应为 200 吗 两者的文档都谈到 如果响应代码在 200 299 范围内 则请
  • PHP 上下文中线程安全意味着什么? [复制]

    这个问题在这里已经有答案了 可能的重复 PHP中什么是线程安全或非线程安全 https stackoverflow com questions 1623914 当某些东西是或不是线程安全时 这意味着什么 例如 PHP 中的 setlocal
  • T-SQL 选择条件连接

    假设我有 3 张桌子 Cars Id 汽车颜色历史 Id CarID ColorID 修改日期 Color Id 颜色名称 我想选择所有汽车及其颜色 但重要的是 汽车的颜色是最后修改的颜色CarColorHistory table 我需要使
  • numpy.any(axis=i) 用于 scipy.sparse

    import numpy a numpy array 0 1 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 numpy any a axis 0 numpy any a axis 1 produces array