【问题标题】:column matrix representation in pythonpython中的列矩阵表示
【发布时间】:2013-03-18 12:38:30
【问题描述】:

如何在python中表示列矩阵和行矩阵?

A =[1,2,3,4]

 1
 2
 3
 4

【问题讨论】:

  • 这取决于你到底需要什么,试着向我们解释你为什么需要这个。 python中的列表总是像行矩阵,但使用不同的数据类型你可以得到你需要的。
  • 我有 2 个矩阵一个行矩阵和另一个列矩阵。我想将这两个相乘。

标签: python matrix


【解决方案1】:

矩阵是二维结构。在纯 Python 中,矩阵最自然的表示形式是列表。

所以,你可以写一个行矩阵:

[[1, 2, 3, 4]]

并将列矩阵写为:

[[1],
 [2],
 [3],
 [4]]

这也很好地扩展到 m x n 矩阵:

[[10, 20],
 [30, 40],
 [50, 60]]

有关如何在纯 Python 中开发完整矩阵包的示例,请参阅 matfunc.py。 它的文档是here

这是一个在普通 python 中使用 list-of-lists 表示进行矩阵乘法的示例:

>>> from pprint import pprint
>>> def mmul(A, B):
        nr_a, nc_a = len(A), len(A[0])
        nr_b, nc_b = len(B), len(B[0])
        if nc_a != nr_b:
            raise ValueError('Mismatched rows and columns')
        return [[sum(A[i][k] * B[k][j] for k in range(nc_a))
                 for j in range(nc_b)] for i in range(nr_a)]

>>> A = [[1, 2, 3, 4]]
>>> B = [[1],
         [2],
         [3],
         [4]]

>>> pprint(mmul(A, B))
[[30]]

>>> pprint(mmul(B, A), width=20)
[[1, 2, 3, 4],
 [2, 4, 6, 8],
 [3, 6, 9, 12],
 [4, 8, 12, 16]]

正如另一位受访者所说,如果您认真对待矩阵运算,您应该安装numpy,它直接支持许多矩阵运算:

【讨论】:

  • 开始永远不要太早。老实说,我认为使用 numpy 数组将比尝试使用列表复制它们的功能要容易得多。
  • @RaymondHettinger 我刚刚找到了这个答案,但是你的答案中的链接已经失效了!
【解决方案2】:

这是我对矩阵函数的实现,它采用矩阵的行数、列数和起始值

def matrix(rows, cols, start=0):
    return [[c + start + r * cols for c in range(cols)] for r in range(rows)]

用法:

>>> m = matrix(5, 1)
>>> m
[[0], [1], [2], [3], [4]]
>>> m = matrix(3, 3, 10)
>>> m
[[10, 11, 12], [13, 14, 15], [16, 17, 18]]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-10
    • 1970-01-01
    • 1970-01-01
    • 2011-03-08
    • 2017-03-25
    • 1970-01-01
    • 2014-02-09
    相关资源
    最近更新 更多