【问题标题】:How do I create a negated matrix? (Python)如何创建否定矩阵? (Python)
【发布时间】:2014-05-17 06:23:08
【问题描述】:

假设我有一个矩阵[[-2,4],[-6,8]]

我想知道如何得到这些数字的相反数:[[2,-4],[6,-8]]

我应该使用 Python 中的特殊函数吗?

【问题讨论】:

  • 如果你在 Python 中做线性代数,请使用 numpy。

标签: python list matrix negate


【解决方案1】:

如果您不想导入包,并且列表解析也有问题,但您喜欢不必要的复杂事物,您可以使用 map()lambda,如下所示:

data = [[-2,4],[-6,8]]
reversed_data = map(lambda sublist: map(lambda x: -x, sublist), data)
# [[2, -4], [6, -8]]

编辑:此示例在 python 2.7 中运行。在 python 3+ map() 返回一个迭代器,所以你需要做 list(map()) 来得到这个结果。 (归功于 SethMMorton)

【讨论】:

  • 请注意,在 python3 中 map 返回一个 map 对象,因此在这种情况下您必须执行 list(map()) 才能获得此结果。
【解决方案2】:
import numpy

matrix = numpy.array([[-2,4],[-6,8]])
negatedMatrix = matrix * -1

print negatedMatrix

给出输出:

[[ 2 -4]
 [ 6 -8]]

【讨论】:

    【解决方案3】:

    使用列表推导是解决问题的一种方法:

    >>> data = [[-2,4],[-6,8]]
    >>> [[-ele for ele in item] for item in data]
    [[2, -4], [6, -8]]
    

    【讨论】:

      【解决方案4】:

      numpy 很棒:P

      a = numpy.array( [[-2,4],[-6,8]])
      a *= -1
      print a
      

      【讨论】:

      • 为什么不简单地a = -a
      • 有没有办法在没有 numpy 的情况下做到这一点?我宁愿不使用包。
      • @shaktimaan 的回答涵盖了在没有 numpy 的情况下进行操作......但真的 numpy 是一个了不起的包
      • 你可以这样做:a = -numpy.array( [[-2,4],[-6,8]])
      猜你喜欢
      • 2012-11-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-23
      • 2022-12-04
      • 1970-01-01
      • 2012-10-03
      • 2020-01-29
      • 1970-01-01
      相关资源
      最近更新 更多