記錄 大檔案的洗牌演算法

2021-10-04 07:27:50 字數 781 閱讀 5946

記錄一下,有乙個超大的資料集檔案,我需要把它打亂順序,但是呢!檔案太大,無法直接匯入記憶體,只能用資料流的方式迭代讀取;

這裡記錄兩種方式;

def split_data_set(dataset_dir):

"""洗牌演算法

"""val_dataset_dir = 'd_val.csv'

train_dataset_dir = 'd_train.csv'

s0 = time.clock()

# 計算檔案有多少行

count = 0

with open(dataset_dir, 'r', encoding='utf-8') as f:

for line in f:

if line != '':

count += 1

print('該檔案共有{}條樣本'.format(count))

# 打亂樣本索引

index = np.arange(count)

random.shuffle(index) # 該方法直接作用於indices沒有返回值

# 按照 發牌方式 記錄下打亂的位置

files = # 臨時檔案列表

mx = # 牌堆的最大值

for i, n in enumerate(index):

# print(mx)

# print(files)

pos = bisect.bisect_left(mx, n) - 1

if pos =

刪除Git記錄中大檔案

專案中之前有個大檔案videos 404 hd.mp4,每次提交 巨慢,所以刪了資源檔案。刪了之後還是提交很多。因為.git裡面有404 hd.mp4的管理記錄。怎麼刪掉呢?來上碼 project git master du sh 34m project git master git filter ...

洗牌演算法的研究

在紙牌遊戲中,有個發牌過程,發牌就是把紙牌序列打亂發給遊戲者。要保證發牌是隨機的,這也符合現實中玩牌的過程,洗牌 洗牌 即產生指定資料的隨機序列,將牌序打亂。方法一 思路 將n個數依次放到隨機的位置。關鍵是每次找乙個隨機的位置。1 設定目標陣列為空 置0 1 每次產生乙個0 n 1的隨機數,看這個位...

PHP 獲取 遠端 大檔案方法記錄

通常php獲取檔案時,會使用file get contents 但當獲取大檔案時,可能會報這樣的錯 allowed memory size of 134217728 bytes exhausted tried to allocate 49422336 bytes 這是因為file get conte...