Python Программа для реализации сортировки сегментов: есть ли лучший способ создать сегмент? - PullRequest
0 голосов
/ 08 апреля 2020

Я инициализировал корзину с помощью np.empty, а после - с помощью np.nan. Это лучший способ? Я не знал, как создать действительно пустой массив! Мне нужен массив EMPTY с 10 строками и столбцами len (array)

Приведенный ниже код является первой частью алгоритма. Код работает!

Другой вопрос: я использовал «for» для итерации блока, который является массивом numpy. Это правильно?

import numpy as np

class BucketSort():
    def __init__(self,array):
        self.array = array
    def distribution_pass(self):
        bucket = np.empty((10,len(self.array)),dtype=int)
        bucket[:] = np.nan
        #rows =[]
       # cols = []
        for num in array:
            for j in range(bucket.shape[1]):
                bucket[num % 10, j] = num
                #rows.append(num%10)
                #cols.append(j)
                break
                print()

        return bucket
    def gathering_pass(self):
        array = []
        self.bucket = BucketSort.distribution_pass(self)
        for i in range(self.bucket.shape[0]):
            for j in range(self.bucket.shape[1]):
              if not np.isnan(self.bucket[i,j]):
                  #print(self.bucket[i,j])
                  array.append(self.bucket[i, j])

        return array


def main(array):
    bucket = BucketSort(array)
    BucketSort.distribution_pass(bucket)
    array = BucketSort.gathering_pass(bucket)
    return array


array = [97,3,100]
print(main(array))
#bucket = BucketSort(array)
#print(bucket.distribution_pass())
#print(bucket.gathering_pass())

Ввод: [97,3,100]

Ввод: [100,3,97]

...