N维数组-Python/Numpy

N维数组-Python/Numpy,python,math,numpy,scipy,Python,Math,Numpy,Scipy,只是想知道是否有什么聪明的方法可以做到以下几点 我有一个表示3x3网格的N维数组 grid = [[1,2,3], [4,5,6], [7,8,9]] 为了获得第一行,我执行以下操作: grid[0][0:3] >> [1,2,3] 为了获得第一列,我想这样做(即使不可能): NumPy是否偶然支持类似的功能? 有什么想法吗?要获得Python中的列,您可以使用: [row[0] for row in grid] >>> [1,

只是想知道是否有什么聪明的方法可以做到以下几点

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

grid = [[1,2,3],
        [4,5,6],
        [7,8,9]]
为了获得第一行,我执行以下操作:

grid[0][0:3]
>> [1,2,3]
为了获得第一列,我想这样做(即使不可能):

NumPy是否偶然支持类似的功能?



有什么想法吗?

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

[row[0] for row in grid]
>>> [1,4,7]
您可以重写代码以将行作为

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


但是,根据您想要实现的目标,我认为最好只编写一个小的matrix类来隐藏这些实现内容。

是的,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])

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

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

除此之外,我会使用Numpy。

不要编写自己的矩阵类。使用已经提供的好的矩阵类。@eumiro:你完全正确。你有什么特别的职业吗?@eumiro:Numpy在很多情况下对我来说似乎有点过分了。据我所知,一个人甚至必须安装一个二进制文件。有一个适用于numpy的debian/ubuntu/(其他)软件包。一旦安装,服务始终有效。
>>> zip(*grid)[0]
(1, 4, 7)