![](/img/trans.png)
[英]How to pass a default numpy array argument to a function in pybind11?
[英]How to pass whole numpy array as argument in python to a user defined function?
我正在嘗試在 python 中實現SelectionSort算法,因此我創建了一個 numpy 數組並希望將其作為參數傳遞給算法。
def SelectionSort(array=None):
for i in range(len(array)):
for j in range(i+1,len(array)):
if(array[j]<array[i]):
array[i],array[j]=array[j],array[I]
但是我得到了這個 ValueError:
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-12-fddcbe25a509> in <module>
----> 1 SelectionSort(np.array([2,5,6,3,7,2,4]))
<ipython-input-11-a238fe8a1004> in SelectionSort(array, length_of_random_array)
1 def SelectionSort(array=None,length_of_random_array=None):
----> 2 if(array==None):
3 array = np.random.randint(-10000,10000,size=length_of_random_array)
4
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
我認為它正在嘗試對數組的每個元素應用算法。
這段代碼對我來說工作得很好,只需要一個返回語句:
設置:
import numpy as np
def SelectionSort(array=None):
for i in range(len(array)):
for j in range(i+1,len(array)):
if(array[j]<array[i]):
array[i],array[j]=array[j],array[i]
return array
執行:
arr = np.array([1,2,3,2,1])
SelectionSort(arr)
Output:
array([1, 1, 2, 2, 3])
1 def SelectionSort(array=None,length_of_random_array=None):
----> 2 if(array==None):
3 array = np.random.randint(-10000,10000,size=length_of_random_array)
4
我認為它正在嘗試對數組的每個元素應用算法。
你是對的:Numpy 對整個數組應用操作。 您的測試理論上可能會導致以下模棱兩可的真值:
if (np.array([1,2,None]) == None):
if (np.array([False,False,True]):
用途is
執行None
檢查。 None
一個是 singleton,因此參考檢查將始終有效。
if (<array defaulting to None> is None):
if (True):
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.