python - 在已经计算了沿该轴的 argmax 之后,沿稀疏矩阵的轴取最大值

标签 python scipy sparse-matrix

我想沿 scipy.sparse 矩阵的轴取 argmax 和 max X

>>> type(X)
scipy.sparse.csr.csr_matrix

>>> idx = X.argmax(axis=0)

>>> maxes = X.max(axis=0)

我不想计算最大值两次,但我不能使用 same approach就好像 X 是一个 np.ndarray。如何将 argmax 中的索引应用到 X

最佳答案

我设法实现了您想要调整您链接的方法的结果:

from scipy.sparse import csr_matrix

a = [[4, 0, 0], [0, 3, 0], [0, 0, 1]]
a = csr_matrix(a)
idx = a.argmax(axis=0)
m = a.shape[1]
a[idx,np.arange(m)[None,:]].toarray()

输出:

array([[4, 3, 1]], dtype=int32)

关于python - 在已经计算了沿该轴的 argmax 之后,沿稀疏矩阵的轴取最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52743352/

相关文章:

scikit-learn - 如何在 Scikit-learn 中使用稀疏矩阵制作多项式特征

python - 以前后字符为条件匹配字符串

Python 非阻塞读取命令

python - 单元测试和元类 : automatic test_* method generation

python - 包.模块导入

python - 有人可以解释 scipy 中超几何分布的这种奇怪行为吗?

python - 为什么不能在 Python 中使用 dbus 调用 org.freedesktop.NetworkManager 中的方法?

python - 将 "zero-columns"替换为 numpy 数组中的值

r - 从稀疏矩阵中提取 i 和 j

matlab - 解决大型系统占用太多内存?