如何解决如何将整个numpy数组作为python中的参数传递给用户定义的函数?
我正在尝试在 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()
我认为它正在尝试对数组的每个元素应用算法。
解决方法
这段代码对我来说非常好,只需要一个 return 语句:
设置:
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,1])
SelectionSort(arr)
输出:
array([1,1,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,None]) == None):
if (np.array([False,False,True]):
使用 is
执行 None
检查。 None
是一个单例,因此参考检查将始终有效。
if (<array defaulting to None> is None):
if (True):
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。