首页 > 解决方案 > 如何使索引/值之间具有相同长度和相似标准偏差的 2 个数组?

问题描述

要求:

我想在 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

第一次尝试:

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))

这次尝试的结果:

第二次尝试:

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))

这次尝试的结果:

上下文信息:

small_array 和 large_array 包含 CT 图像的切片,因此它们可以变化。
结果数组应包含更大数组的索引,这些索引之间应具有相似的标准偏差,以便比较更小数组和更大数组(具有相同起点和终点但切片数不同)之间的相似区域。

标签: pythonmathstandard-deviation

解决方案


推荐阅读