N维数组 - Python / Numpy

时间:2011-01-24 10:11:19

标签: python math numpy scipy

只是想知道是否有任何聪明的方法来执行以下操作。

我有一个代表3x3网格的N维数组

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

为了获得第一行,我执行以下操作:

grid[0][0:3]
>> [1,2,3]

为了获得第一栏,我想做这样的事情(尽管不可能):

grid[0:3][0]
>> [1,4,7]

NumPy是否支持任何与此相似的内容?


有什么想法吗?

3 个答案:

答案 0 :(得分:10)

是的,在Numpy中有类似的东西:

import numpy as np

grid = np.array([[1, 2, 3],
                 [4, 5, 6],
                 [7, 8, 9]])

grid[0,:]
# array([1, 2, 3])

grid[:,0]
# array([1, 4, 7])

答案 1 :(得分:2)

您可以使用zip转置表示为列表列表的矩阵:

>>> zip(*grid)[0]
(1, 4, 7)

除此之外,我还会使用Numpy。

答案 2 :(得分:1)

要获取Python中的列,您可以使用:

[row[0] for row in grid]
>>> [1,4,7]

您可以重写代码以获取行

grid[0][:]

因为[:]只复制整个数组,所以不需要添加索引。

但是,根据你想要实现的目标,我会说最好只写一个小矩阵类来隐藏这个实现的东西。