手術をしたい
通常の形状であれ ば、np.einsum を使用できます。構文は次のようになると思います
np.einsum('ijp,ipk->ijk',X, alpha)
残念ながら、私のデータ X は、第 1 軸 (インデックスがゼロの場合) に非規則的な構造を持っています。
もう少し文脈を与えるために、i^ 番目のグループの j^ 番目のメンバーの p^ 番目の機能を参照します。グループのサイズは異なるため、事実上、これは長さが異なるリストのリストであり、同じ長さのリストのリストです。
通常の構造を持っているため、標準の numpy 配列として保存できます (1 次元で提供され、次に alpha.reshape(a,b,c) を使用します。ここで、a、b、c は問題固有の整数です)。
Xをリストのリストのリストまたは異なる次元のnp.arraysのリストとして保存し、次のようなものを書くことは避けたい
A = []
for i in range(num_groups):
temp = np.empty(group_sizes[i], dtype=float)
for j in range(group_sizes[i]):
temp[i] = np.einsum('p,pk->k',X[i][j], alpha[i,:,:])
A.append(temp)
これは、これを行うための素晴らしい機能/データ構造ですか?それとも、部分的にのみベクトル化された実装で妥協する必要がありますか?