5

numpy は、たとえばnumpy.atleast_3dを介して、配列を少なくとも 1D、2D、または 3D 配列に変換する 3 つの便利なルーチンを提供します。

もう 1 つの次元に相当するものが必要です: atleast_4d. ネストされた if ステートメントを使用してさまざまな方法を考えることができますが、問題の配列を返すより効率的で高速な方法があるかどうか疑問に思っていました。あなたの答えでは、可能であれば実行速度の推定値 (O(n)) を確認したいと思います。

4

2 に答える 2

9

このnp.arrayメソッドには、次のオプションのndminキーワード引数があります。

結果の配列に必要な次元の最小数を指定します。Ones は、この要件を満たすために必要に応じて形状に追加されます。

設定copy=Falseも行う場合は、目的に近づく必要があります。


独自の代替手段として、先頭ではなく末尾に追加のディメンションが必要な場合は、次のようにします。

arr.shape += (1,) * (4 - arr.ndim)
于 2013-04-11T07:05:52.387 に答える
1

次のような単純なものにできないのはなぜですか。

import numpy as np
def atleast_4d(x):
    if x.ndim < 4:
        y = np.expand_dims(np.atleast_3d(x), axis=3)
    else:
        y = x

    return y

すなわち。次元数が 4 未満の場合はatleast_3d、最後に余分な次元を呼び出して追加します。それ以外の場合は、そのまま配列をそのまま返します。

于 2013-04-11T05:37:16.203 に答える