首頁 > 後端開發 > Python教學 > NumPy 的`meshgrid`函數如何有效率地產生數組值的所有組合?

NumPy 的`meshgrid`函數如何有效率地產生數組值的所有組合?

Mary-Kate Olsen
發布: 2024-12-21 01:24:09
原創
260 人瀏覽過

How Can NumPy's `meshgrid` Function Efficiently Generate All Combinations of Array Values?

利用 NumPy 進行高效能數組組合

為了研究六參數函數的數值行為,您需要尋找一種有效的方法來遍歷其參數空間。最初,您使用自訂函數來組合數組值,然後使用 reduce() 來重複套用它。雖然有效,但事實證明這種方法很麻煩。

NumPy 的高效解決方案

較新版本的 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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板