0

リストに収集されたnumpy行列があります。各マトリックスの特定のエントリ、たとえば各マトリックスの 2 番目のエントリを含む配列を作成する必要があります。ループは避けたい。

データはすでにこの形になっています。構造を変更したり、マトリックスを別のものに変更したりしたくありません。

コード例 - データ構造:

L = []
m1 = np.mat([ 1, 2, 3]).T
m2 = np.mat([ 4, 5, 6]).T
m3 = np.mat([ 7, 8, 9]).T
m4 = np.mat([10,11,12]).T
m5 = np.mat([13,14,15]).T  
L.append(m1)
L.append(m2)
L.append(m3)
L.append(m4)
L.append(m5)

私がそれを行うことができた唯一の方法は、ループを使用することです:

S = []
for k in range(len(L)):
    S.append(L[k][1,0])
print 'S = %s' % S

必要な出力:次のS = [2, 5, 8, 11, 14]ようなものだと思いました:S1 = np.array(L[:][1,0])動作するはずですが、何を試しても次のようなエラーが発生します: TypeError: list indices must be integers, not tuple。それにアクセスする効率的な方法(派手なスタイル)は何ですか?

4

3 に答える 3

2

あなたもできる

>>> M = np.column_stack([m1,m2,m3,m4,m5])

次に、次の方法で行にアクセスします

>>> M[1]
matrix([[ 2,  5,  8, 11, 14]])

大きなベクトルがあり、複数の行にアクセスしたい場合、これは長期的には高速になる可能性があります。

于 2013-07-10T14:52:37.773 に答える
2

リスト内包表記の使用:

>>> x = [i[1] for i in L]
>>> x
[2, 5, 8, 11, 14]
>>> 
于 2013-07-10T12:15:13.127 に答える