我有一个包含601个排序值的列表,这些值从-15到15不等。即A=[-15,-14.95,-14.90,…,14.95,15]。但是,我想创建一个新的列表,其中的元素从第一个值(-15(开始。新列表中元素的数目应该是2的幂。即32或64或128或256等
New_list=[2^n]个元素。其中n=4或5或6或7等
此外,新列表中的这些值应该来自我的列表,但等距(两个连续值之间的差可能与0.05不同,0.05是原始列表中的距离(。有没有任何方法可以使用一些库函数(最好是Python中的函数(来实现这一点。感谢您的帮助。
这个怎么样:
import numpy as np
def get_sample(arr, power):
num_elements = 2 ** power
spacing = len(arr) // num_elements
stop = spacing * num_elements
sample = arr[:stop:spacing]
return sample
A = np.linspace(-15, 15, 601)
print(get_sample(A, 0))
print(get_sample(A, 1))
print(get_sample(A, 2))
print(get_sample(A, 3))
print(get_sample(A, 4))
print(get_sample(A, 5))
具有以下结果:
[-15.]
[-15. 0.]
[-15. -7.5 0. 7.5]
[-15. -11.25 -7.5 -3.75 0. 3.75 7.5 11.25]
[-15. -13.15 -11.3 -9.45 -7.6 -5.75 -3.9 -2.05 -0.2 1.65 ...
[-15. -14.1 -13.2 -12.3 -11.4 -10.5 -9.6 -8.7 -7.8 -6.9 ...