質問:パッドは、0年代二つ
どのように迅速冒頭に大きな配列(〜600個の000エントリ)に0を追加するには、配列の長さを持って次の2の威力。 (2^n)np.concatinate()のほかにもっと速い解決策がありますか?
- の配列の長さが2のべき乗に等しくなるまでnp.concatenate(0、ARR)関数を使用して:私はすでに試みたもの
。私が働いているコードは、非常に長い時間がかかります。
ここでパッド左機能です:
def PadLeft(arr):
nextPower = NextPowerOfTwo(len(arr))
deficit = int(math.pow(2, nextPower) - len(arr))
#for x in range(1, int(deficit)):
for x in range(0, deficit):
arr = np.concatenate(([0], arr))
return arr
は、ここでは、2つの関数の次の力です:
def NextPowerOfTwo(number):
# Returns next power of two following 'number'
return math.ceil(math.log(number,2))
私の実装:
arr = np.ones(())
a = PadLeft(arr)
ありがとうございました!
出力配列をゼロで初期化し、値を設定しますか? – Divakar
私が扱っている配列はさまざまな長さで入ってきますので、私はそれを投稿したいと思います! – jackskis
私は次のような意味を持っていました: 'out = np.zeros(deficit + len(arr)、dtype = arr.dtype); out [deficit:] = arr'を実行して、 'PadLeft(arr)' IIUCからの出力をシミュレートします。 – Divakar