私は現在、Scikit-Learn関数をサルキーパッチしていますが、その1行に2次元のNumPy配列が必要です。しかし、私が扱っているデータは3次元のNumPy配列なので、「あまりにも多くの値を解凍する」というエラーが発生します。次元を変更せずに多次元NumPy配列の形状を変更する
私はK-Means関数fit
を呼び出してデータをクラスタリングしています。データが表す
X = np.array([[[1, 2, 3],
[4, 5, 6]],
[[7, 8, 9],
[10, 11, 12]],
[[13, 14, 15],
[16, 17, 18]]])
:
n_samples, n_features = X.shape
X
は、次のような3つの寸法を持つ配列である:私の問題は、X
私が渡しndarray
あると仮定すると、このコードの次の行に要約します6次元のデータポイントの時系列のグループ。例えば、最初の要素[[1, 2, 3], [4, 5, 6]]
は、2つの期間からのサンプルを有する時系列を表し、各サンプルは3次元を有する。
ndarray
ndarray
でクラスタリングを実行できるようにするには、k_means_
コードをサルでパッチしました。私の目標は、2Dアレイでk-meansを実行することです。
3D ndarrayの形状を2つの要素に設定できますか?たとえば、3D配列をオブジェクトの2D配列に変換しようとしましたが、変換が3D配列に変換されてしまいます。
np.array([[x.astype(object) for x in c] for c in combined])
同様に、次のコードも同様に3D配列に変換されます。それは正しい配列を作成するよう
np.array([[np.array(x) for x in c] for c in combined])
リストの内包[[x.astype(object) for x in c] for c in combined]
は見えませんが、それはタイプリストであるため、それはもはや機能で動作します。
3D NumPy配列を2次元に「変換」する方法を探しています。どんな助けでも大歓迎です!
注:アレイの形状を変更する方法はありません。私はすべてのディメンションを保持する必要がありますが、ディメンションの1つを無視するようにシェイプを変更します。
に保存します。しかし、あなたが私たちに何を求めているかを伝える必要があります。 –
寸法は形状タプルの長さです。 'n_samples、n_features = X.shape'は、2要素タプルを2つの変数にアンパックする標準のPython式です。すべてのサブリストが同じサイズであれば、配列やリストを含むオブジェクトdtype配列を作成するのは難しいです。しかし、たとえ成功しても、コードが使えるように見えません。 – hpaulj
@hpauljはい、わかりました。私の問題は、私の 'X.shape'には3つの要素があり、関数のその行に展開することができないということです。私は、 '' ndarrays'の2次元配列か 'objects'の2次元配列であるかのように、' X'だけが2次元であると考えるように行を "トリック"する方法を探しています – victor