【问题标题】:replace a number in a the row of a matrix if certain condition is met in python如果在python中满足某些条件,则替换矩阵行中的数字
【发布时间】:2018-02-20 23:21:14
【问题描述】:

如果满足特定条件,如何替换矩阵行中的数字?例如,如果它们小于3,我如何将最后一行中的数字替换为零?

A:
matrix([[ 1,  2,  3,  4],
[ 2,  4, 10,  1]])

应该是这样的:

A:
matrix([[ 1,  2,  3,  4],
[ 0,  4, 10,  0]])

【问题讨论】:

  • 用什么替换它们?都是同一个号码?列表中的值?
  • 用零替换。如果最后一列中的任何数字小于 3,则将其替换为零
  • @AlbertoAlvarez,以下解决方案之一有帮助吗?如果是这样,请随意接受(在左侧打勾)。

标签: python arrays python-3.x matrix


【解决方案1】:

这种转换可以直接就地执行:

import numpy as np

A = np.matrix([[ 1,  2,  3,  4],
               [ 2,  4, 10,  1]])

A[-1][A[-1] < 3] = 0

# matrix([[ 1,  2,  3,  4],
#         [ 0,  4, 10,  0]])

【讨论】:

    【解决方案2】:

    如果您想将该逻辑应用于所有元素,您可能需要使用以下内容:

    In [21]: a=[[ 1,  2,  3,  4],
        ...:    [ 2,  4, 10,  1]]
        ...:    
        ...: 
    
    In [22]: b = list()
    
    In [23]: l = lambda v: 0 if v < 3 else v
    
    In [24]: for r in a:
        ...:     b.append(list(map(l, r)))
        ...:     
    
    In [25]: b
    Out[25]: [[0, 0, 3, 4], [0, 4, 10, 0]]
    

    【讨论】:

      猜你喜欢
      • 2021-12-22
      • 1970-01-01
      • 1970-01-01
      • 2022-12-08
      • 2023-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多