0
我想要做的是在圖像的隨機行中找到局部最小值(完成),然後在該列表中找到局部最小值。
我已經寫了下面的代碼使用函數來找到一個1-d陣列的最低值:試圖理解遞歸尋找最小值
import numpy as np
values = []
pixels = []
def find_minima(array):
'''
Takes a 1-d array as an argument, and returns a list of the
minimum values of the array, and the pixels at which the
minima occur
'''
# Find local minimum, and add to list of minimum-valued pixels
for i in range(1, len(array)-1):
if array[i-1] > array[i]:
if array[i+1] > array[i]:
values.append(array[i])
pixels.append([i])
else:
continue
return (values, pixels)
# Generate a random image
np.random.seed(seed=128)
side = 15
img = np.random.rand(side, side)
height = img.shape[0] # Inspect height of image
# Select row at random
index = np.random.randint(0, height)
row = img[index]
minimum_values, minimum_pixels = find_minima(row)
global_minimum_values, global_minimum_pixels = find_minima(minimum_values)
程序正常工作,直到我試圖通過已經找到的minimum_values
名單,回到函數中查找該列表中的最小值。
我期待的變量值將是:
minimum_values = [0.2274, 0.6910, 0.2715, 0.3075]
minimum_pixels = [[1], [3], [7], [11]]
global_minimum_values = [0.2715]
global_minimum_pixels = [2]
而是,程序只是大頭針全球最低到原來的列表,使他們都是一樣的:
minimum_values = [0.2274, 0.6910, 0.2715, 0.3075, 0.2715]
minimum_pixels = [[1], [3], [7], [11], [2]]
global_minimum_values = [0.2274, 0.6910, 0.2715, 0.3075, 0.2715]
global_minimum_pixels = [[1], [3], [7], [11], [2]]
如何更改代碼以生成我想要的輸出?
注意:有可能更簡單的方法來做到這一點,但這種方式最適合我需要做的其他處理,所以我想了解爲什麼這個代碼特別不符合我的預期。