我试图做我认为应该简单的事情:
我制作了一个2D列表:
a = [[1,5],[2,6],[3,7]]
我想滑出第一个column
并尝试:
1)
a[:,0]
...
TypeError: list indices must be integers or slices, not tuple
2)
a[:,0:1]
...
TypeError: list indices must be integers or slices, not tuple
3)
a[:][0]
[1, 5]
4)
a[0][:]
[1, 5]
5)得到了它,但这是这样做的吗?
aa[0] for aa in a
使用numpy
这很简单,但Python方式是什么?
答案 0 :(得分:5)
像a[:, 0]
这样的2D切片仅适用于NumPy数组,不适用于列表。
但是,您可以使用zip(*a)
转置(行成为列,反之亦然)嵌套列表。转置后,只需切出第一行:
a = [[1,5],[2,6],[3,7]]
print zip(*a) # [(1, 2, 3), (5, 6, 7)]
print list(zip(*a)[0]) # [1, 2, 3]
答案 1 :(得分:0)
使用[x[0] for x in a]
是明确而恰当的方式。
答案 2 :(得分:0)
您在数字1和2中尝试做的是在numpy数组中(或类似于pandas数据帧),但不适用于基本的python列表。如果您想使用基本的python列表,请在您的问题的评论中查看@ cricket_007的答案。
使用numpy的原因之一就是这样 - 它可以更容易地切割具有多个维度的数组