在 Python 中访问数组列的最佳方法是什么?

新手上路,请多包涵

在 Matlab 中,可以使用 : 访问数组的一列:

 >> array=[1 2 3; 4 5 6]

array =

     1     2     3
     4     5     6

>> array(:,2)

ans =

     2
     5

如何在 Python 中执行此操作?

 >>> array=[[1,2,3],[4,5,6]]
>>> array[:,2]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: list indices must be integers, not tuple
>>> array[:][2]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>

附录

我想要一个应用于维度大于三的数组的示例:

 >> B = cat(3, eye(3), ones(3), magic(3))

B(:,:,1) =

     1     0     0
     0     1     0
     0     0     1

B(:,:,2) =

     1     1     1
     1     1     1
     1     1     1

B(:,:,3) =

     8     1     6
     3     5     7
     4     9     2

>> B(:,:,1)

ans =

     1     0     0
     0     1     0
     0     0     1

>> B(:,2,:)

ans(:,:,1) =

     0
     1
     0

ans(:,:,2) =

     1
     1
     1

ans(:,:,3) =

     1
     5
     9

原文由 qazwsx 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 422
2 个回答

使用 麻木

 >>> import numpy as np
>>>
>>> a = np.array([[1,2,3],[4,5,6]])
>>> a[:, 2]
array([3, 6])

如果您来自 Matlab,这应该会引起您的兴趣: 链接

原文由 Bruno 发布,翻译遵循 CC BY-SA 4.0 许可协议

您可以使用内置的 zip() 函数按列对二维列表中的数据进行分组:

 >>> array=[[1,2,3],[4,5,6]]
>>> zip(*array)
[(1, 4), (2, 5), (3, 6)]
>>> zip(*array)[1]
(2, 5)

请注意,索引从 0 开始,因此要获得示例中的第二列,您使用 zip(*array)[1] 而不是 zip(*array)[2]zip() 返回元组而不是列表,这取决于你如何使用它,这可能不是问题,但如果你需要列表,你可以随时做 map(list, zip(*array))list(zip(*array)[1]) 进行转换。

原文由 Andrew Clark 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题