2017-03-22 20 views
1

私は簡単であるべきだと思う何をやろうとしている:2Dスライスを行う方法は?

私は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の方法は何ですか?

+1

の[リストのリストの内側のリストからn番目の要素を取得するの'私には正常に見える –

+0

可能な重複[におけるAAのためのAA [0] Pythonで](http://stackoverflow.com/questions/13188476/get-the-nth-element-from-the-inner-list-of-a-list-of-lists-in-python) – Himaprasoon

答えて

0

使用[x[0] for x in a]は明確かつ適切な方法です。

0

数字1と2で何をしようとしているのは、基本的なpythonリストではなく、numpy配列(または同様のpandasデータフレーム)で機能します。基本的なpythonリストでそれをしたいのであれば、@ cricket_007の答えをあなたの質問に書いてください。

numpyのを使用する理由の一つは、まさにこれです - それははるかに簡単a[:, 0]よう

5

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

それをラップする'list'これはOPが望む出力です:' list(zip(* a)[0]) ' – ppasler

関連する問題