Я не смог найти четкого ответа на этот вопрос:
Я использую прямую функцию сортировки выбора, например, так:
from numpy.random import seed
from numpy.random import randint
# We start with a function that finds the smallest
#value in our array
def findSmallest(arr):
smallest = arr[0] # stores the smallest value
smallestIndex = 0 # stores the index of the
# smallest value
for i in range(1, len(arr)):
if arr[i] < smallest:
smallest = arr[i]
smallestIndex = i
return smallestIndex
# Our findSmallest function can be used in the
#selection sort algorithm
def selectionSort(arr):
newArr = []
for i in range(len(arr)):
smallest = findSmallest(arr)
newArr.append(arr.pop(smallest))
return smallestIndex
Затем, вместо того, чтобы делать каждыймассив, мне нужно по одному, я запускаю цикл для возврата словаря, содержащего все массивы:
arraySizes = (5000, 10000, 15000, 20000, 25000)
myArray = dict()
for size in arraySizes:
myArray[size] = randint(99999, size = size)
Это работает:
print(myArray[10000])
На основе разговорав комментариях я исправляю свой вопрос, но оставлю исходный вопрос под пунктирной линией немного дальше
Хорошо.Так что я был совершенно не в своей тарелке, когда думал, что ** работал при передаче массива в функцию.
Что я до сих пор не могу понять, это как запустить цикл, который передает значения из каждого ключав функцию и возвращает объекты, которые работают с функцией selectionSort выше.
Итак, я хочу передать {5000: 10,2, ... n, 10000: 10000,200 ... n и т. д.}
на selectionSort и в конечном итоге получим что-то по строкам объектов, которые sort5000 = [2,10, ... n] sort10000 = [200, ... n, 10000]
Это не совсем верно, но, надеюсь, достигнет моей цели.Если нет, пожалуйста, дайте мне знать.
Но, когда я пытаюсь передать его в вышеупомянутый выбор сортировки:
selectionSort(**myArray[5000])
Я получаю ошибку:
------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-21-bc709916eed6> in <module>()
----> 1 selectionSort(**myArray[5000])
TypeError: selectionSort() argument after ** must be a mapping, not
numpy.ndarray
Я не уверен, как поступить.Должен ли я переписать selectionSort, чтобы он возвращал число массивов?Есть ли способ передать значения из dict по одному?Неужели я все делаю неправильно и должен просто создать несколько массивов и передавать их по одному?
Спасибо за любую помощь.