2016-06-29 11 views
1

リストの違いを教えてもらえますかサイズ?一旦それが(x、1)であり、もう一方(x、)である。私はそれのためにidexErrorを得ると思う。リストのサイズが異なる

おかげ enter image description here

print(Annotation_Matrix) 
    [array([[1], 
    ..., 
    [7], 
    [7], 
    [7]], dtype=uint8)] 

print(idx) 
[array([ True, True, True, ..., False, False, False], dtype=bool)] 

P.S.左のは、(1×)異なるX行1列(2次元)の行列であり、

+0

リストのprint()を投稿できますか?スニペットのように?このエラーを回避する良い方法は、イテラブル(リスト、タプルなど)をループすることです:iterableの項目の場合:またはiの場合、列挙(iterable)の項目:インデックスが必要な場合。これは、反復可能なサイズに従って反復するならば、量を扱うことができます。 –

+1

あなたの答えをありがとう。私は実際にインデックスを取得することに問題はありませんが、後でコードを使用します:a = [val [idx [sb] ,:: sbの場合、列挙型(idx)の範囲でsb(len(c) ))]。ここで私はエラーが発生します:IndexError:配列のインデックスが多すぎます。私はそれがサイズ表記が異なるためだと思います。 –

+1

追加:Annotatio_Matrix(左リスト)を使用するとidx(右リスト)を使用するとエラーが発生するだけです。 –

答えて

1
in1d(...) 

matlabfile.get(...) 

右のサイズの配列Aを使用して作成されサイズ(1、x)のATから。彼らは同じ要素を持っていますが、異なる '方向性'を持っています。 サイズ(x、)の配列Bは、x座標(1次元)のベクトルで、向きはありません(行でも列でもありません)。それは単なる要素のリストです。

最初のケースでは、A [i、:]がA [i、0]と同じ要素にアクセスできます(1つの列しかないため)。 配列Bには次元が1つしかないため、後ではB [i ,:]という呼び出しでエラーが発生します。正しい呼び出しはB [i]です。

私はこれが問題の解決に役立つことを願っています。

+0

あなたの答えをありがとう。それを100%明瞭にするために、numpyは(x、1)だけを(x、)として書くか?右の図に見られるように。しかし、(x、1)と言われる左のprictrueとの違いは何ですか? –

+0

Numpyは、2つの次元(x、1)と1つの次元(x、)の両方の型の配列を管理します。これはMATLABまたはOctaveとの違いです。すべてが行列です(この場合は(x、1)のみ)。 –

+0

ああ、情熱のための乾杯。範囲(len(selected_babies))内のsbにidx = [transpose(idx [sb])]を使用すると、実際には変更されません。すべきではない? –

関連する問題