python 矩阵乘法 跳过nan_python – Numpy:智能矩阵乘法到稀疏结果矩阵

以下是使用NumPy / SciPy进行密集和稀疏M矩阵的方法:

import numpy as np

import scipy.sparse as sp

# Coordinates where S is True

S = np.array([[0, 1],

[3, 6],

[3, 4],

[9, 1],

[4, 7]])

# Dense M matrix

# Random big matrix

M = np.random.random(size=(1000, 2000))

# Take relevant rows and compute values

values = np.sum(M[S[:, 0]] * M[S[:, 1]], axis=1)

# Make result matrix from values

result = np.zeros((len(M), len(M)), dtype=values.dtype)

result[S[:, 0], S[:, 1]] = values

# Sparse M matrix

# Construct sparse M as COO matrix or any other way

M = sp.coo_matrix(([10, 20, 30, 40, 50], # Data

([0, 1, 3, 4, 6], # Rows

[4, 4, 5, 5, 8])), # Columns

shape=(1000, 2000))

# Convert to CSR for fast row slicing

M_csr = M.tocsr()

# Take relevant rows and compute values

values = M_csr[S[:, 0]].multiply(M_csr[S[:, 1]]).sum(axis=1)

values = np.squeeze(np.asarray(values))

# Construct COO sparse matrix from values

result = sp.coo_matrix((values, (S[:, 0], S[:, 1])), shape=(M.shape[0], M.shape[0]))

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值