稀疏矩阵的列元素相乘

2024-01-10

我有一个稀疏的 csc 矩阵,其中有许多零元素,我想计算每行所有列元素的乘积。

i.e.:

 A = [[1,2,0,0],
      [2,0,3,0]]

应转换为:

V = [[2,
      6]]

使用 numpy 密集矩阵,可以通过将所有零值替换为一个值并使用A.prod(1)。然而,这不是一个选择,因为密集矩阵太大。

有没有什么方法可以在不将稀疏矩阵转换为密集矩阵的情况下实现这一目标?


方法#1:我们可以使用稀疏元素的行索引作为 ID,并将这些元素的相应值与np.multiply.reduceat https://docs.scipy.org/doc/numpy/reference/generated/numpy.ufunc.reduceat.html以获得所需的输出。

因此,实施将是 -

from scipy import sparse
from scipy.sparse import csc_matrix

r,c,v = sparse.find(a) # a is input sparse matrix
out = np.zeros(a.shape[0],dtype=a.dtype)
unqr, shift_idx = np.unique(r,return_index=1)
out[unqr] = np.multiply.reduceat(v, shift_idx)

样本运行 -

In [89]: # Let's create a sample csc_matrix
    ...: A = np.array([[-1,2,0,0],[0,0,0,0],[2,0,3,0],[4,5,6,0],[1,9,0,2]])
    ...: a = csc_matrix(A)
    ...: 

In [90]: a
Out[90]: 
<5x4 sparse matrix of type '<type 'numpy.int64'>'
    with 10 stored elements in Compressed Sparse Column format>

In [91]: a.toarray()
Out[91]: 
array([[-1,  2,  0,  0],
       [ 0,  0,  0,  0],
       [ 2,  0,  3,  0],
       [ 4,  5,  6,  0],
       [ 1,  9,  0,  2]])

In [92]: out
Out[92]: array([ -2,   0,   6, 120,   0,  18])

方法#2:我们正在执行基于 bin 的乘法。我们有基于箱的求和解决方案np.bincount https://docs.scipy.org/doc/numpy/reference/generated/numpy.bincount.html。因此,这里可以使用的一个技巧是将数字转换为对数,执行基于 bin 的求和,然后使用以下命令转换回原始格式exponential(日志的反面)就是这样!对于负数,我们可能会添加一个或更多步骤,但让我们看看非负数的实现是什么样的 -

r,c,v = sparse.find(a)
out = np.exp(np.bincount(r,np.log(v),minlength = a.shape[0]))
out[np.setdiff1d(np.arange(a.shape[0]),r)] = 0

使用非负数运行的样本 -

In [118]: a.toarray()
Out[118]: 
array([[1, 2, 0, 0],
       [0, 0, 0, 0],
       [2, 0, 3, 0],
       [4, 5, 6, 0],
       [1, 9, 0, 2]])

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

稀疏矩阵的列元素相乘 的相关文章

  • 此 TypeError 消息中提到的“代码对象”是什么?

    在尝试使用Python时exec声明 我收到以下错误 TypeError exec arg 1 must be a string file or code object 我不想传递字符串或文件 但什么是代码对象 如何创建一个 创建代码对象的
  • Virtualenv 在 OS X Yosemite 上失败并出现 OSError

    我最近更新到 OSX Yosemite 现在无法使用virtualenv pip 每当我执行 virtualenv env 它抛出一个 OSError Command Users administrator ux env bin pytho
  • 将非常大的Python列表输出保存到mysql表中

    我想将 python 生成的列表的输出保存在 mysql 数据库的表中 该表如下所示 mysql 中的 myapc8 表 https i stack imgur com 4B4Hz png这是Python代码 在此输入图像描述 https
  • 多处理中的动态池大小?

    有没有办法动态调整multiprocessing Pool尺寸 我正在编写一个简单的服务器进程 它会产生工作人员来处理新任务 使用multiprocessing Process对于这种情况可能更适合 因为工作人员的数量不应该是固定的 但我需
  • 按边距(“全部”)值列对 Pandas 数据透视表进行排序

    我试图根据 pandas 数据透视表中的行总和对最后一列 边距 aggrfunc 进行降序排序 我知道我在这里错过了一些简单的东西 但我无法弄清楚 数据框 数据透视表 WIDGETS DATE 2 1 16 2 2 16 2 3 16 Al
  • 是否可以从 Julia 调用 Python 函数并返回其结果?

    我正在使用 Python 从网络上抓取数据 我想使用这些数据在 Julia 中运行计算 是否可以在 Julia 中调用该函数并返回其结果 或者我最好直接导出到 CSV 并以这种方式加载数据 绝对地 看PyCall jl https gith
  • 创建上下文后将 jar 文件添加到 pyspark

    我正在笔记本上使用 pyspark 并且不处理 SparkSession 的创建 我需要加载一个包含一些我想在处理 rdd 时使用的函数的 jar 您可以使用 jars 轻松完成此操作 但在我的特定情况下我无法做到这一点 有没有办法访问sp
  • 使用 Paramiko 进行 DSA 密钥转发?

    我正在使用 Paramiko 在远程服务器上执行 bash 脚本 在其中一些脚本中 存在与其他服务器的 ssh 连接 如果我只使用 bash 不使用 Python 我的 DSA 密钥将被第一个远程服务器上的 bash 脚本转发并使用 以连接
  • AttributeError:“模块”对象没有属性[重复]

    这个问题在这里已经有答案了 我有两个 python 模块 a py import b def hello print hello print a py print hello print b hi b py import a def hi
  • Python HMAC:类型错误:字符映射必须返回整数、None 或 unicode

    我在使用 HMAC 时遇到了一个小问题 运行这段代码时 signature hmac new key secret key msg string to sign digestmod sha1 我收到一个奇怪的错误 File usr loca
  • Python将文本文件解析为嵌套字典

    考虑以下数据结构 HEADER1 key value key value HEADER2 key value key value HEADER3 key value HEADER4 key value key value 原始数据中没有缩进
  • 使用 for 循环创建一系列元组

    我已经搜索过 但找不到答案 尽管我确信它已经存在了 我对 python 很陌生 但我以前用其他语言做过这种事情 我正在以行形式读取数据文件 我想将每行数据存储在它自己的元组中 以便在 for 循环之外访问 tup i inLine wher
  • 可以使用哪些技术来衡量 pandas/numpy 解决方案的性能

    Question 如何简洁全面地衡量下面各个功能的性能 Example 考虑数据框df df pd DataFrame Group list QLCKPXNLNTIXAWYMWACA Value 29 52 71 51 45 76 68 6
  • Python bug - 或者我的愚蠢 - 扫描字符串文字时 EOL

    我看不出以下两行之间有显着差异 然而第一个解析 而后者则不解析 In 5 n Axis of Awesome In 6 n Axis of Awesome File
  • AWS Lambda 不读取环境变量

    我正在编写一个 python 脚本来查询 Qualys API 中的漏洞元数据 我在 AWS 中将其作为 lambda 函数执行 我已经在控制台中设置了环境变量 但是当我执行函数时 出现以下错误 module initialization
  • 如何给URL添加变量?

    我正在尝试从网站收集数据 我有一个 Excel 文件 其中包含该网站的所有不同扩展名 F i www example com example2 我有一个脚本可以成功从网站中提取 HTML 但现在我想为所有扩展自动执行此操作 然而 当我说 s
  • Django 管理器链接

    我想知道是否有可能 如果可以的话 如何 将多个管理器链接在一起以生成受两个单独管理器影响的查询集 我将解释我正在研究的具体示例 我有多个抽象模型类 用于为其他模型提供小型的特定功能 其中两个模型是DeleteMixin 和GlobalMix
  • 如何从namedtuple实例列表创建pandas DataFrame(带有索引或多索引)?

    简单的例子 from collections import namedtuple import pandas Price namedtuple Price ticker date price a Price GE 2010 01 01 30
  • pandas 中数据帧中的随机/洗牌行

    我目前正在尝试找到一种方法来按行随机化数据框中的项目 我在 pandas 中按列洗牌 排列找到了这个线程 在 pandas 中对 DataFrame 进行改组 排列 https stackoverflow com questions 157
  • 将 Keras 集成到 SKLearn 管道?

    我有一个 sklearn 管道 对异构数据类型 布尔 分类 数字 文本 执行特征工程 并想尝试使用神经网络作为我的学习算法来拟合模型 我遇到了输入数据形状的一些问题 我想知道我想做的事情是否可能 或者我是否应该尝试不同的方法 我尝试了几种不

随机推荐

  • DB2级联删除命令?

    是否有特殊的语法来在 DB2 上执行级联删除 或者是否只能通过使用 ON DELETE CASCADE 选项定义它们来创建 可级联 表 我想要实现的是 当我删除该键时 删除基于相同外键的其他表行 但这是在已经存在且填充数据的数据库上完成的
  • 如何迭代到较小的容器(即步幅!= 1)

    有一个问题在精神上很相似here https stackoverflow com questions 2476425 c stl stdtransform with given stride 不幸的是 这个问题没有引起太多回应 我想我会问一
  • Twitter bootstrap 响应式布局中的最小宽度

    有没有办法告诉 bootstrap 当分辨率小于以下值时不要缩小元素 Portrait tablet to landscape and desktop media min width 768px and max width 979px 我想
  • 如何将有理数格式化为小数?

    给定一个任意大 或小 Rational具有有限十进制表示形式的数字 例如 r Rational 1 2 15 gt 1 32768 如何以字符串形式获取其完整的十进制值 上述数字的预期输出是 0 000030517578125 to f显然
  • 如何使用 java JDBC 获取 MySql 的数据库“架构”名称列表

    如何使用 java JDBC 获取 MySql 的数据库 架构 名称列表 The getSchemas DatabaseMetaData 的方法是显而易见的 但对于 MySQL 你必须使用getCatalogs http download
  • 在没有forceRTL的情况下反应原生阿拉伯语(RTL)

    在 RN 我的双语应用程序 英语 阿拉伯语 中 我使用了I18nManager 意见 和I18n 用于翻译 当我将应用程序语言更改为阿拉伯语时 整个应用程序会使用以下代码从启动屏幕再次重新加载 I18nManager forceRTL tr
  • 为什么 get_weights 返回一个空列表?

    我正在自学数据科学 一些奇怪的东西引起了我的注意 在我正在编写的 DNN 示例教程中 我发现 Keraslayer get weights 函数为我的变量返回空列表 我已成功交叉验证并使用model fit 函数来计算召回分数 但当我尝试使
  • 如何使用 javascript 检测 iPhone/Android 从睡眠中唤醒

    我正在构建一个使用 sockets io 的网站 网络应用程序 目前 如果用户在 iphone 上使用 safari 并且锁定屏幕 变黑 我的套接字连接将关闭 这个不错 我想要这个 然而 当他们解锁屏幕 或从睡眠中醒来 时 我想用 java
  • 内联过滤 django admin - 限制选择列表

    鉴于我的内联管理 class TestInlineAdmin admin TabularInline model Test questions through extra 0 and then class QuestionAdmin adm
  • 无法将 UIButton 的自定义类更改为 GIDSignInButton

    我正在尝试将 Google 登录功能添加到自定义按钮 并且我正在关注this https www appcoda com google sign in how to 教程 它告诉我选择按钮 并将其类别设置为GIDSignInButton 然
  • 人们对 DVCS 化石有何看法? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 更新进程内的 GUI 项目

    我正在尝试为我的应用程序制作 GUI 但遇到了问题 使用PySimpleGUI我必须首先定义布局 然后才显示整个窗口 现在的代码是这样的 import PySimpleGUI as sg layout sg Text Input sg In
  • 可空字符串 (string?) 和初始化为可原谅空值的字符串 (字符串 s = null!) 之间有什么区别

    可空字符串 string 和初始化为可原谅空值的字符串 字符串 s null 之间有什么区别 public string nullableString get set null public string forgiveString get
  • “Visual Studio 需要更新版本的 Windows 才能显示此内容。”

    收到错误 Visual Studio 需要更新版本的 Windows 才能显示此内容 在 Xamarin 中使用 XAML 设计器工具时 关于我如何追踪其来源有什么想法吗 我使用的是 Windows 10 和 Visual Studio 2
  • 如何将 /?lang=en 重定向到 /en?

    我在将多语言网站重定向到一页时遇到问题 我的 htaccess 重定向无法正常运行 我需要有关如何完成此操作的帮助 在我的 htaccess 中 当我添加这两行时 RewriteCond QUERY STRING lang en Rewri
  • 需要 Google 地理编码返回英文城市名称

    我有这个代码用于请求谷歌更正输入的地址 并需要它返回城市的英文名称 function gmap query xml in address base url http maps google com maps geo output xml r
  • 反应本机 100+ 项目平面列表性能非常慢

    我有一个列表 只是简单的文本 可以在 React Native 上渲染为平面列表 但我遇到了非常非常慢的性能 这使得应用程序无法使用 我该如何解决这个问题 我的代码是
  • 为什么 Task 在我的项目中不可等待?

    我有一个针对 NET 4 框架的项目 并且我创建了一个更新数据库中数据的方法 该方法本身还使用一个标志 runAsync 来确定是否应该异步运行 我收到错误 System Threading Tasks Task 不可等待 但我在另一个应用
  • 按拆分列排序

    我有一个名为 id 的专栏 4 1 2 10 0 4 1 2 3 0 4 1 2 4 0 6 1 20 0 0 6 1 3 0 0 etc 我想做的是包含一个 ORDER BY 语句来分割 字符串 变成这样 4 1 2 3 0 4 1 2
  • 稀疏矩阵的列元素相乘

    我有一个稀疏的 csc 矩阵 其中有许多零元素 我想计算每行所有列元素的乘积 i e A 1 2 0 0 2 0 3 0 应转换为 V 2 6 使用 numpy 密集矩阵 可以通过将所有零值替换为一个值并使用A prod 1 然而 这不是一