Требование:
Я бы хотел сделать функцию в python, которая имеет 2 массива, 1 больше второго .
Я хотел бы, чтобы больший размер принимал тот же размер, что и меньший .
НО не только удаляя конец или начало массива, я хотел бы сохранить аналогичное стандартное отклонение выбранного индекса большего массива.
Например:
Для массива размера 10 и массива размера 95 массив размера 95 должен стать размером 10 с, например, выбранным индексом [8, 17, 27, 36 , 46, 55, 65, 74, 84, 93]
в псевдокоде пример ожидаемого результата будет:
len_bigger_array=95 # example where len(bigger_array)=95
len_smaller_array=10 # example where len(smaller_array)=10
result_array=[8, 17, 27, 36, 46, 55, 65, 74, 84, 93] #index of bigger_array with similar distance between each other
len(result_array)=10 #like len_small_array
1st Try:
total = len_bigger_array #len_bigger_array is len(bigger_array)
wanted = len_smaller_array #len_smaller_array is len(smaller_array)
div = 0
mod = 0
result_array = []
divider = int(total/wanted)
rest= total/wanted - divider
for x in range (0, total):
div=div+1
if (div >= divider):
if (mod >= 0.95):
div=div-1
mod=0
else:
result_array.append(x)
mod=mod+rest
div=0
print(result_array, len(result_array))
И результат этой попытки:
- для
len_bigger_array=95
и len_smaller_array=10
работает : result_array=[8, 17, 27, 36, 46, 55, 65, 74, 84, 93]
и len(result_array)=10
- для
len_bigger_array=1999
и len_smaller_array=100
работает , также: len(result_array)=100
и содержит индекс large_array с аналогичным расстоянием между каждым - для
len_bigger_array=182
и len_smaller_array=69
он не работает : result_array
содержит индекс bigger_array
с одинаковым расстоянием между ними, но len(result_array)!=len_smaller_array
- для
len_bigger_array=95
и len_smaller_array=33
не работает : result_array
содержит индекс bigger_array
с одинаковым расстоянием между ними, но len(result_array)!=len_smaller_array
2nd Try:
import math
total = len_bigger_array
wanted = len_smaller_array
result_array = []
divider = math.ceil(total/wanted)
for x in range (0, total):
if(x % divider == 0):
result_array.append(x)
missingSlice = wanted - len(result_array)
print(missingSlice)
if (missingSlice>0):
newWanted=int(total/missingSlice)
print(newWanted)
for x in range (0, total):
if (x % newWanted ==0 and x !=0):
if x not in l:
result_array.append(x)
else:
result_array.append(x-1)
print(result_array,len(result_array))
И результат этой попытки:
- для
len_bigger_array=95
и len_smaller_array=10
* 107 3 * это работает : result_array=[0, 10, 20, 30, 40, 50, 60, 70, 80, 90]
и len(result_array)=10
- для
len_bigger_array=1999
и len_smaller_array=100
это работает также: len(result_array)=100
и содержат индекс больше_array с аналогичным расстояние между каждым - для
len_bigger_array=182
и len_smaller_array=69
работает : также: len(result_array)=69
и содержит индекс large_array с аналогичным расстоянием между каждым - для
len_bigger_array=95
и len_smaller_array=33
не работает : result_array
содержит индекс bigger_array
с одинаковым расстоянием между ними, но len(result_array)=32
вместо 33
Context информация:
меньший_аррай и более крупный_аррай содержат срез изображения CT, поэтому они могут варьироваться.
массив результатов должен содержать индекс большего_аррэйма, эти индексы должны иметь одинаковое стандартное отклонение между собой, чтобы сравнить похожую область между меньшим_арреем и более крупным_арреем (которые имеют одинаковую начальную и конечную точку, но различное количество срезов).