簡體   English   中英

如何將整個 numpy 數組作為 python 中的參數傳遞給用戶定義的 function?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM