使用Python替换矩阵中的特定值

矩阵

我有amxn矩阵,其中每一行都是一个样本,每一列都是一个类。每行包含每个类别的soft-max概率。我想将每一行的最大值替换为1,将其他行替换为0。如何在Python中高效地做到这一点?

亚伦·霍尔

我认为对您的特定问题的最佳答案是使用矩阵类型的对象。

假设大多数矩阵都填充了零,那么就以内存友好的方式存储大量此类大尺寸矩阵而言,稀疏矩阵应该是性能最高的。这应该优于直接使用numpy数组,特别是对于两个维度中的非常大的矩阵(如果不是就计算速度而言,就内存而言)。

import numpy as np
import scipy       #older versions may require `import scipy.sparse`

matrix = np.matrix(np.random.randn(10, 5))
maxes = matrix.argmax(axis=1).A1           
                      # was .A[:,0], slightly faster, but .A1 seems more readable
n_rows = len(matrix)  # could do matrix.shape[0], but that's slower
data = np.ones(n_rows)
row = np.arange(n_rows)
sparse_matrix = scipy.sparse.coo_matrix((data, (row, maxes)), 
                                        shape=matrix.shape, 
                                        dtype=np.int8)

相对于常规矩阵对象,此sparse_matrix对象应该非常轻巧,而常规矩阵对象将不必要地跟踪其中的每个零。要将其具体化为普通矩阵:

sparse_matrix.todense()

返回:

matrix([[0, 0, 0, 0, 1],
        [0, 0, 1, 0, 0],
        [0, 0, 1, 0, 0],
        [0, 0, 0, 0, 1],
        [1, 0, 0, 0, 0],
        [0, 0, 1, 0, 0],
        [0, 0, 0, 1, 0],
        [0, 1, 0, 0, 0],
        [1, 0, 0, 0, 0],
        [0, 0, 0, 1, 0]], dtype=int8)

我们可以比较一下matrix

matrix([[ 1.41049496,  0.24737968, -0.70849012,  0.24794031,  1.9231408 ],
        [-0.08323096, -0.32134873,  2.14154425, -1.30430663,  0.64934781],
        [ 0.56249379,  0.07851507,  0.63024234, -0.38683508, -1.75887624],
        [-0.41063182,  0.15657594,  0.11175805,  0.37646245,  1.58261556],
        [ 1.10421356, -0.26151637,  0.64442885, -1.23544526, -0.91119517],
        [ 0.51384883,  1.5901419 ,  1.92496778, -1.23541699,  1.00231508],
        [-2.42759787, -0.23592018, -0.33534536,  0.17577329, -1.14793293],
        [-0.06051458,  1.24004714,  1.23588228, -0.11727146, -0.02627196],
        [ 1.66071534, -0.07734444,  1.40305686, -1.02098911, -1.10752638],
        [ 0.12466003, -1.60874191,  1.81127175,  2.26257234, -1.26008476]])

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在python中的特定坐标处替换矩阵的元素

来自分类Dev

在python中的特定坐标处替换矩阵的元素

来自分类Dev

Python:替换矩阵的多个值

来自分类Dev

Python填充矩阵与特定值

来自分类Dev

如何用python中的特定值替换column的值?

来自分类Dev

用数组值替换特定的矩阵位置,而无需在MATLAB中使用for循环

来自分类Dev

用数组值替换特定的矩阵位置,而无需在MATLAB中使用for循环

来自分类Dev

用Matlab替换符号矩阵中的值

来自分类Dev

R循环替换矩阵中的多个值

来自分类Dev

替换Julia中子矩阵中的值

来自分类Dev

合并和替换重叠矩阵中的值

来自分类Dev

R循环替换矩阵中的多个值

来自分类Dev

替换 scipy 稀疏 csr 矩阵中的值

来自分类Dev

使用python替换netCDF文件中的值

来自分类Dev

使用镜头替换(键,值)列表中的特定元素

来自分类Dev

使用php替换xml中的特定节点值

来自分类Dev

如何使用索引替换特定列中的行值?

来自分类Dev

如何用另一个矩阵的值(使用Rcpp)替换C ++中矩阵的元素?

来自分类Dev

使用Python中的数组值构建的矩阵数组

来自分类Dev

使用python读取文件并将值存储在矩阵中

来自分类Dev

使用python删除矩阵中对角线上的值

来自分类Dev

矩阵数组,使用Python中数组的值构建

来自分类Dev

使用python读取文件并将值存储在矩阵中

来自分类Dev

Matlab:替换矩阵值

来自分类Dev

带有特定值的Python填充矩阵

来自分类Dev

检查numpy矩阵中特定元素的值

来自分类Dev

在矩阵中查找特定值的索引

来自分类Dev

如何求和矩阵中的特定值?

来自分类Dev

如何使用Python用RegEx在文件中替换的值替换JSON中的值?

Related 相关文章

热门标签

归档