【问题标题】:Printing a column in an matrix without numpy在没有numpy的矩阵中打印一列
【发布时间】:2013-04-10 22:54:59
【问题描述】:

我真的是编程新手,所以如果这是一个非常简单的问题,我深表歉意,但我一直在尝试在不使用 numpy 的情况下打印矩阵中的第一列,但是它的打印方式如下:

matrix = \
[[0, 1],
 [3, 7],
 [9, 4],
 [10, 3]]

print matrix[0:3][0]
[0, 1] 

我也试过了:

print matrix[:][0]
[0, 1]

print matrix[:3]
[[0, 1], [3, 7], [9, 4]]

print matrix[:3][0]
[[0, 1], [3, 7], [9, 4]]

我想要达到的答案是:

print matrix[code]
0, 3, 9, 10

或类似的。

【问题讨论】:

  • 我不确定你为什么认为 matrix[:3] 应该打印你给出的结果 - 切片语法是 slicable[start:stop:step],(如果没有给出,则分别默认为 0、len(slicable) 和 1),所以[:3] 的意思是,从 0 开始,在 3 停止。
  • 啊,太对了。谢谢指正!

标签: python arrays matrix


【解决方案1】:

您拥有的是一个列表列表 - 因此那里没有列的概念。有两种方法可以做到这一点,一种是(如Pavel Anossov's answer 所示)是使用列表推导。

一种是使用zip(),它可以用来转置一个可迭代对象:

>>> list(zip(*matrix))
[(0, 3, 9, 10), (1, 7, 4, 3)]

我在这里列出了一个列表,以便更容易地显示输出。请注意,在 2.x 中,zip() 给出了一个列表而不是一个迭代器(尽管惰性版本可以作为 itertools.izip() 使用)。

一般来说,如果您打算处理多个列,我会使用zip(),如果您只需要一个列,我会使用列表理解。

【讨论】:

    【解决方案2】:

    在没有 numpy 的情况下切片是不可能的。您可以使用列表推导:

    print [row[0] for row in matrix]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-01-10
      • 2018-12-23
      • 1970-01-01
      • 1970-01-01
      • 2013-03-17
      • 2019-04-02
      • 1970-01-01
      相关资源
      最近更新 更多