【发布时间】:2014-05-17 06:23:08
【问题描述】:
假设我有一个矩阵[[-2,4],[-6,8]]。
我想知道如何得到这些数字的相反数:[[2,-4],[6,-8]]。
我应该使用 Python 中的特殊函数吗?
【问题讨论】:
-
如果你在 Python 中做线性代数,请使用 numpy。
假设我有一个矩阵[[-2,4],[-6,8]]。
我想知道如何得到这些数字的相反数:[[2,-4],[6,-8]]。
我应该使用 Python 中的特殊函数吗?
【问题讨论】:
如果您不想导入包,并且列表解析也有问题,但您喜欢不必要的复杂事物,您可以使用 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)
【讨论】:
map 返回一个 map 对象,因此在这种情况下您必须执行 list(map()) 才能获得此结果。
import numpy
matrix = numpy.array([[-2,4],[-6,8]])
negatedMatrix = matrix * -1
print negatedMatrix
给出输出:
[[ 2 -4]
[ 6 -8]]
【讨论】:
使用列表推导是解决问题的一种方法:
>>> data = [[-2,4],[-6,8]]
>>> [[-ele for ele in item] for item in data]
[[2, -4], [6, -8]]
【讨论】:
numpy 很棒:P
a = numpy.array( [[-2,4],[-6,8]])
a *= -1
print a
【讨论】:
a = -a ?
a = -numpy.array( [[-2,4],[-6,8]])