Python:在多维数组中访问列值

时间:2011-09-28 20:18:36

标签: python arrays

示例:

a = [[1,2,3],[4,5,6],[7,8,9]]

通过执行类似a[:][0]的操作,我希望它能够在每行中为我提供第一个元素[1,4,7]

但是,我得到[1,2,3]。我总是可以做一个功能。

def column(array,index):
    result = []
    for row in array:
        result.append(row[index])
    return result

但我想知道:有更聪明的方法吗?

5 个答案:

答案 0 :(得分:3)

由于a[:][0]的{​​{1}} gives a copy

a[:]无效。然后a从该副本中获取第一个值,即[0]

而是使用list comprehension

[1,2,3]

答案 1 :(得分:2)

以这种方式操作数组的事实上的标准方法是使用专用的NumPy包。

事情以你想要的方式运作,使用NumPy:

>>> import numpy
>>> a = numpy.array([[1,2,3],[4,5,6],[7,8,9]])
>>> a[:,0]
array([1, 4, 7])

事实上,NumPy的目的是提供强大的数组操作。

答案 2 :(得分:2)

您也可以使用一行for循环,但它与您已经执行的操作相同:

a = [[1,2,3],[4,5,6],[7,8,9]]
result = [item[0] for item in a]

答案 3 :(得分:2)

使用zip()

>>> a = [[1,2,3],[4,5,6],[7,8,9]]
>>> zip(*a)
[(1, 4, 7), (2, 5, 8), (3, 6, 9)]
>>> zip(*a)[0]
(1, 4, 7)

但请注意,zip会构建元组,这可能需要您根据应用程序转换回列表。

答案 4 :(得分:1)

一些列表理解能够完成这项任务:

a = [[1,2,3],[4,5,6],[7,8,9]]
col = [c[0] for c in a]

不知道速度影响。