[解決済み] hstack/vstack と append と concatenate と column_stack はどのように使い分ければよいですか?
2022-12-05 18:27:30
質問
単純な質問ですが、これらのメソッドのそれぞれの利点は何でしょうか。正しいパラメータ(およびndarrayの形状)が与えられると、それらはすべて一見等価に動作するように見えます。いくつかのメソッドは同じ場所で動作しますか? より良いパフォーマンスを持っていますか?どの関数をいつ使うべきですか?
どのように解決するのですか?
全ての関数はPythonで書かれています。
np.concatenate
. IPython シェルでは、単に
??
.
そうでない場合は、そのコードの要約を紹介します。
vstack
concatenate([atleast_2d(_m) for _m in tup], 0)
i.e. turn all inputs in to 2d (or more) and concatenate on first
hstack
concatenate([atleast_1d(_m) for _m in tup], axis=<0 or 1>)
colstack
transform arrays with (if needed)
array(arr, copy=False, subok=True, ndmin=2).T
append
concatenate((asarray(arr), values), axis=axis)
つまり、これらはすべて入力配列の次元を調整し、右軸に連結することで動作します。 便利な関数に過ぎません。
そして、より新しい
np.stack
:
arrays = [asanyarray(arr) for arr in arrays]
shapes = set(arr.shape for arr in arrays)
result_ndim = arrays[0].ndim + 1
axis = normalize_axis_index(axis, result_ndim)
sl = (slice(None),) * axis + (_nx.newaxis,)
expanded_arrays = [arr[sl] for arr in arrays]
concatenate(expanded_arrays, axis=axis, out=out)
つまり、すべての入力のdimを展開します(少し似ていますが
np.expand_dims
のようなものです)、そして連結します。 このとき
axis=0
と同じになります。
np.array
.
hstack
のドキュメントが追加されました。
関数
concatenate
,stack
とblock
は、より一般的な積み重ねと連結の操作を提供します。
np.block
も新しいものです。 これは事実上、ネストされたリストに沿って再帰的に連結します。
関連
-
[解決済み] Pythonでシングルトンを作成する
-
[解決済み] pandasを使った "大量データ "ワークフロー【終了しました
-
[解決済み] Pythonのdictsで'has_key()'と'in'のどちらを使うべきですか?
-
[解決済み] 2次元アレイにおけるピーク検出
-
[解決済み] なぜ[]はlist()よりも速いのですか?
-
[解決済み] Pythonの上達の道 - 見習いから第一人者へ
-
[解決済み] distribute, distutils, setuptools, distutils2 の違い?
-
[解決済み】djangoのビジネスロジックとデータアクセスの分離
-
[解決済み] Djangoで2つの日付の間を選択する
-
[解決済み] Flask でグローバル変数はスレッドセーフか?リクエスト間でデータを共有するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 前月の日時オブジェクトを返す
-
[解決済み] Pythonでコード行間にかかる時間を測定するには?
-
[解決済み] タプルのリストを複数のリストに変換するには?
-
[解決済み] Pythonで0xを使わずにhex()を使うには?
-
[解決済み] matplotlib でプロットの軸、目盛、ラベルの色を変更する方法
-
[解決済み] Celeryタスクのユニットテストはどのように行うのですか?
-
[解決済み] pycharmがタブをスペースに自動変換する
-
[解決済み] virtualenvsはどこに作成するのですか?
-
[解決済み] 単純な文字列からtimedeltaオブジェクトを作成する方法
-
[解決済み] djangoのQueryDictをPythonのDictに変更するには?