2016-11-02 4 views
0

のセットを避けるためには、だから私は、リストのリストを持っている: -行列の形でリストのリストを反復が、列

私は内容を反復処理し、特定の列を避けたい
a = [[1,2,3,4],[5,6,7,8],[4,5,6,7]] 

for i in range (0,len(a[0])): 

は今、私の知る限りでは、私は特定の列を避けるために、1つの以上の条件を必要とする次のようなループ構造のための私の一般的です。それ、どうやったら出来るの?

これを実行する別の方法は、列全体を削除して最後まで追加することです。

だから、列を削除した後:

a = [[1,2,4],[5,6,8],[4,5,7]] 

追加した後:

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

私はこれを行うためにnumpyの使用することができます。だから私はnumpyから目的の列を削除しています。ここ は、作業コードです:

a = [[1,2,3,4],[5,6,7,8],[4,5,6,7]] 
a_np= np.array(a) 
a_col_data = a_np[:,2] 
a1 = np.delete(a_np, 2 , axis = 1) 

今私のa_col_dataは、私がこの形式で追加することはできません[3 7 6]

です。私は[[3],[7],[6]] この形式でそれを必要とするそれから私はの最後の列としてそれを追加するには、次のコードを使用することができます。 をリスト[3 7 6]を変換する方法:

np.append(a_np, a_col_data, axis=1) 

は今、私が直面していますので、このアプローチに発行します[[3],[7],[6]]に? 私は150列と3000行のリストを持っていると考えると、手動では行えません。

もう1つの問題は、np.arrayが要素間の "、"を削除する構造のような純粋な行列にリストを変換することです。私はリスト構造を元に戻したい。たとえば :

a = [[1,2,4],[5,6,8],[4,5,7]] 
a_np = [[1 2 4][5 6 8][4 5 7]] 

にはどうすればa_npは再びに変換するのですか?

EDIT:

[OK]を、私はちょうどstackoverflowのを閲覧していたと私は解決策を得ました。私はそれを元に戻すために次の操作を行うだけです:

a_np.tolist() 

答えて

1

これを実行する方法はたくさんあります。

あなたはa_col_dataに余分な軸を追加することができます。

>>> a_np2 = np.append(a1, a_col_data[:, np.newaxis], axis=1) 
>>> a_np2 
array([[1, 2, 4, 3], 
     [5, 6, 8, 7], 
     [4, 5, 7, 6]]) 
>>> a_np2.tolist() 
[[1, 2, 4, 3], [5, 6, 8, 7], [4, 5, 7, 6]] 

それともenumerateを使用してnumpyのルートを行く避けることができます:

a = [[1,2,3,4],[5,6,7,8],[4,5,6,7]] 
for i in a: 
    for j, x in enumerate(i): 
     if j == 2: 
      continue 
     ... 
+0

お返事ありがとうございます。 1つのクイッククエリ: - 私のリストが= [[1.0,2.0,3.0]、[4.0,5.0,6.0 .....]の場合。小数点以下を削除してa = [[1,2,3]、[4,5,6] .....]にするには – skyfail

+0

@Skyfail **遅延応答**: 'np.array(a) .astype(int).tolist() '。 **より良い答え**:ネストされたリストの理解を使用し、各フロートを整数にキャストします。それが助けられた場合は、回答を受け入れることもできます。 –

+0

もう一度ありがとうございます。しかし、ネストされたリストの理解方法は、あなたが提供した怠惰な答えよりも優れていますか? – skyfail

0

ですから、リストのリストを持っているし、リストにしたいですリストの1つのエントリが欠落していますか?

a = [[x for i, x in enumerate(sublist) is i != 2] for sublist in a] 
0

それぞれのサブリストのインデックス2にあるアイテムを削除するとします。

a = np.array([[1,2,3,4],[5,6,7,8],[4,5,6,7]]) 
for col in a[:,[0,1,2]].T: 
    print col 
関連する問題