2017-06-29 115 views
0

我有一個代碼,我通知一個文件夾,它有n圖像,代碼應該返回給我的相對頻率直方圖。保存一個變量(在循環中)的所有值在Python中的另一個變量

從那裏,我有一個函數調用:

for image in total_images: 
    histogram(image) 

哪裏image是當前圖像的代碼正在與total_images是總的圖像(n)的它在事先通知的文件夾。

從那裏我調用histogram()函數,發送代碼正在工作的當前圖像作爲參數。

我的histogram()函數的目的是返回每個圖像的相對頻率的直方圖(rel_freq)。

雖然返回的值是正確的,rel_freq應該是一個陣列1x256位置範圍從0到255。

我怎樣才能變換rel_freq可變成1x256數組?並將每個值存儲在其相應的位置?

當我做len *rel_freq)它返回我256,這時候我意識到,這不是我需要的格式...

此外,雖然返回的數據是正確的......

之後,我需要創建一個數組store_all = len(total_images)x256所有rel_freq ...

我需要保存所有rel_freq在數組稍後保存和外部文件,例如保存爲.TXT。

我想創建另一個功能做到這一點的?

類似的東西,但我不知道該怎麼做是正確的,但我相信你會理解其中的邏輯...

def store_all_histograms(total_images): 
    n = len(total_images) 

    store_all = [n][256] 

    for i in range(0,n): 
     store_all[i] = rel_freq 

我知道函數store_all_histograms()是錯誤的,我只是在這裏寫出來或多或少地顯示我正在考慮的方式......但是,我不知道如何正確地做到這一點......在這一點,我得到的錯誤是:

store_all = [n][256] 
IndexError: list index out of range 

畢竟,我需要的store_all變量保存例如所有的相對頻率直方圖是這樣的:

position:  0 ... 256 
store_all = [ 
      [..., ..., ...], 
      [..., ..., ...], 
      . 
      . 
      . 
      n 
      ] 

現在遵循的代碼塊:

def histogram(path): 
    global rel_freq 

    #Part of the code that is not relevant to the question... 

    rel_freq = [(float(item)/total_size) * 100 if item else 0 for item in abs_freq] 

def store_all_histograms(total_images): 
    n = len(total_images) 

    store_all = [n][256] 

    for i in range(0,n): 
     store_all[i] = rel_freq 

#Part of the code that is not relevant to the question... 

# Call the functions 
for fn in total_images: 
    histogram(fn) 

    store_all_histograms(total_images) 

我希望我已成功地清晰與問題。

在此先感謝,如果您需要任何其他信息,您可以問我...

+0

「當我做LEN(rel_freq)返回我256,這時候我意識到,這不是我需要的格式...」你怎麼從1x256陣列期待什麼呢? 'len'是一個python builtin。 – roganjosh

+1

歡迎來到堆棧溢出。更長的問題不一定比簡短的問題好。我很難理解你的問題的重要部分是什麼。這裏有一個寫一個很好的問題的指南:[問] –

+0

@roganjosh我需要這個,因爲我稍後會將直方圖的值放入多層感知器中,看看它是否能夠對我的圖像進行分類。 – QuestionsStackOverflow

回答

2

返回結果,不要使用全局變量:

def histogram(path): 
    return [(float(item)/total_size) * 100 if item else 0 for item in abs_freq] 

創建一個空表:

store_all = [] 

和追加結果:

for fn in total_images: 
    store_all.append(histogram(fn)) 

另外,使用列表理解:

store_all = [histogram(fn) for fn in total_images] 
+0

謝謝!這工作完美! – QuestionsStackOverflow

1
for i in range(0,n): 
    store_all[i+1] = rel_freq 

試試這個也許?如果我是誠實的,我對這個問題有點困惑。你是否試圖將所有項目調用數組的方式改爲1,以便通過列表[1]調用列表[1]而不是通過列表[0]調用位置1?

所以你想要它像這樣?

>>list = [0,1,2,3,4] 
>>list[1] 
0 
+0

'>> list = [[0,0,0,0,...,0,0,0,0],[1,1,1,1,...,1,1,1,1] ,[2,2,2,2,...,2,2,2,2]]' '>> list [3]' '>> [2,2,2,2,..., 2,2,2,2]' 這就是我需要它的方式...... – QuestionsStackOverflow

相關問題