gpt4 book ai didi

python - 如何在 Python 中制作矩阵?

转载 作者:太空狗 更新时间:2023-10-29 21:16:07 24 4
gpt4 key购买 nike

我用谷歌搜索并搜索了 StackOverflow 和 YouTube。我只是无法在 Python 中获得矩阵来点击我的脑袋。有人可以帮帮我吗?我只是想创建一个基本的 5x5 框来显示:

A A A A A
B B B B B
C C C C C
D D D D D
E E E E E

我得到了

a b c d e
a b c d e
a b c d e
a b c d e
a b c d e

要显示,但我什至无法让它们换行,而是它们将显示为

[['A', 'B', 'C', 'D', 'E'], ['A', 'B', 'C', 'D', 'E'], ['A', 'B', 'C', 'D', 'E'], ['A', 'B', 'C', 'D', 'E'], ['A', 'B', 'C', 'D', 'E']]

如果我尝试向它们添加\n 或打印 ""等它只是不起作用..\n 将显示为 'A\n' 并且打印将显示在矩阵之前。

请有人帮助我,即使你把我带到一个非常明显的地方,让我看起来像个白痴,我也只想学习这个。

最佳答案

您问题的答案取决于您的学习目标。如果您想让矩阵“点击”以便稍后使用它们,我建议您查看 Numpy array 而不是列表列表。这将使您可以轻松地切出行、列和子集。只是尝试从列表列表中获取一列,您会感到沮丧。

使用列表的列表作为矩阵...

让我们以您的列表列表为例:

L = [list("ABCDE") for i in range(5)]

获取任意行的子元素很容易:

>>> L[1][0:3]
['A', 'B', 'C']

或整行:

>>> L[1][:]
['A', 'B', 'C', 'D', 'E']

但是尝试翻转它以获取列格式的相同元素,但它不会工作...

>>> L[0:3][1]
['A', 'B', 'C', 'D', 'E']

>>> L[:][1]
['A', 'B', 'C', 'D', 'E']

您必须使用列表理解之类的方法来获取所有第 1 个元素....

>>> [x[1] for x in L]
['B', 'B', 'B', 'B', 'B']

输入矩阵

如果您改为使用数组,您将获得您期望从 MATLAB 或 R(或大多数其他语言,就此而言)获得的切片和索引:

>>> import numpy as np
>>> Y = np.array(list("ABCDE"*5)).reshape(5,5)
>>> print Y
[['A' 'B' 'C' 'D' 'E']
['A' 'B' 'C' 'D' 'E']
['A' 'B' 'C' 'D' 'E']
['A' 'B' 'C' 'D' 'E']
['A' 'B' 'C' 'D' 'E']]
>>> print Y.transpose()
[['A' 'A' 'A' 'A' 'A']
['B' 'B' 'B' 'B' 'B']
['C' 'C' 'C' 'C' 'C']
['D' 'D' 'D' 'D' 'D']
['E' 'E' 'E' 'E' 'E']]

抓取第 1 行(与列表一样):

>>> Y[1,:]
array(['A', 'B', 'C', 'D', 'E'],
dtype='|S1')

捕获第 1 列(新!):

>>> Y[:,1]
array(['B', 'B', 'B', 'B', 'B'],
dtype='|S1')

现在生成打印矩阵:

for mycol in Y.transpose():
print " ".join(mycol)


A A A A A
B B B B B
C C C C C
D D D D D
E E E E E

关于python - 如何在 Python 中制作矩阵?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19084476/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com