當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


Python numpy shares_memory用法及代碼示例

本文簡要介紹 python 語言中 numpy.shares_memory 的用法。

用法:

numpy.shares_memory(a, b, /, max_work=None)

確定兩個數組是否共享內存。

警告

對於某些輸入,此函數可能會呈指數級緩慢,除非max_work被設置為有限數或MAY_SHARE_BOUNDS。如有疑問,請使用numpy.may_share_memory反而。

參數

a, b ndarray

輸入數組

max_work 整數,可選

花費在解決重疊問題上的努力(要考慮的候選解決方案的最大數量)。識別以下特殊值:

max_work=MAY_SHARE_EXACT(默認)

問題正好解決了。在這種情況下,僅當數組之間共享一個元素時,該函數才返回 True。在某些情況下,找到確切的解決方案可能需要很長時間。

max_work=MAY_SHARE_BOUNDS

僅檢查 a 和 b 的內存邊界。

返回

out bool

拋出

numpy.TooHardError

超過max_work。

例子

>>> x = np.array([1, 2, 3, 4])
>>> np.shares_memory(x, np.array([5, 6, 7]))
False
>>> np.shares_memory(x[::2], x)
True
>>> np.shares_memory(x[::2], x[1::2])
False

檢查兩個數組是否共享內存是NP-complete,runtime可能會在維數上成倍增長。因此,max_work 通常應設置為有限數,因為可以構建運行時間極長的示例:

>>> from numpy.lib.stride_tricks import as_strided
>>> x = np.zeros([192163377], dtype=np.int8)
>>> x1 = as_strided(x, strides=(36674, 61119, 85569), shape=(1049, 1049, 1049))
>>> x2 = as_strided(x[64023025:], strides=(12223, 12224, 1), shape=(1049, 1049, 1))
>>> np.shares_memory(x1, x2, max_work=1000)
Traceback (most recent call last):
...
numpy.TooHardError: Exceeded max_work

跑步np.shares_memory(x1, x2)沒有max_work在這種情況下,設置大約需要 1 分鍾。有可能發現需要更長時間的問題。

相關用法


注:本文由純淨天空篩選整理自numpy.org大神的英文原創作品 numpy.shares_memory。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。