為了研究六參數函數的數值行為,您需要尋找一種有效的方法來遍歷其參數空間。最初,您使用自訂函數來組合數組值,然後使用 reduce() 來重複套用它。雖然有效,但事實證明這種方法很麻煩。
較新版本的 NumPy(1.8.x 及更高版本)提供了一個更優越的解決方案:numpy.meshgrid()。此函數可以建立包含輸入數組所有可能組合的多維數組。在您的情況下:
import numpy as np a = np.arange(0, 1, 0.1) combinations = np.array(np.meshgrid(a, a, a, a, a, a)).T.reshape(-1, 6)
此方法顯著提高了效能,如以下基準所示:
%timeit np.array(np.meshgrid(a, a, a, a, a, a)).T.reshape(-1, 6) # Output: 10000 loops, best of 3: 74.1 µs per loop
或者,您可以使用以下自訂函數來實現最大程度的控制:
def cartesian(arrays): arr = np.empty((len(arrays.shape), len(arrays))) for n, array in enumerate(arrays): arr[n, :] = array return arr.T.reshape(-1, len(arrays)) %timeit cartesian([a, a, a, a, a, a]) # Output: 1000 loops, best of 3: 135 µs per loop
以上是NumPy 的`meshgrid`函數如何有效率地產生數組值的所有組合?的詳細內容。更多資訊請關注PHP中文網其他相關文章!