一個可能的且只有內存不是時間密集型的解決方案是使用np.repeat
和np.resize
來重複數組a和b,並將其重新調整爲最終形狀的大小,然後簡單地添加這兩個數組。
代碼:
import numpy as np
a = np.array([0, 10, 20])
b = np.array([20, 30, 40, 50])
def extend_and_add(a, b):
return np.repeat(a, len(b)) + np.resize(b, len(a)*len(b))
所以extend_and_add(a, b)
回報:
extend_and_add(a, b)
> array([20, 30, 40, 50, 30, 40, 50, 60, 40, 50, 60, 70])
說明:
基本上np.repeat(a, len(b))
重複:
a
> array([ 0, 10, 20])
到
np.repeat(a, len(b))
> array([ 0, 0, 0, 0, 10, 10, 10, 10, 20, 20, 20, 20])
在此之後,你需要np.resize
調整第二陣列:
b
> array([20, 30, 40, 50])
調整爲:
np.resize(b, len(a)*len(b))
> array([20, 30, 40, 50, 20, 30, 40, 50, 20, 30, 40, 50])
現在,我們可以簡單地添加數組:
個
array([ 0, 0, 0, 0, 10, 10, 10, 10, 20, 20, 20, 20])
+
array([20, 30, 40, 50, 20, 30, 40, 50, 20, 30, 40, 50])
回報:
array([20, 30, 40, 50, 30, 40, 50, 60, 40, 50, 60, 70])
這有什麼錯'for'循環? – TigerhawkT3
你的數組是什麼? numpy,array.array? –
在列表解析中做'for'計數? ;) – Pynchia