我有一个二维数组,其中每个元素都是一个傅里叶变换。我想要对“对数级别”进行分割。例如,让我们取其中一个数组并将其称为a
:
a = np.arange(0, 512)
# I want to split a into 'bins' defined by b, below:
b = np.array([0] + [10 * 2**i for i in range(6)]) # [0, 10, 20, 40, 80, 160, 320, 640]
我希望做的事情类似于使用
np.split
,但我想根据数组b
将值分割成“桶”,使得所有a
值在[0,10)之间的值都在一个桶中,所有值在[10,20)之间的值都在另一个桶中,以此类推。我可以通过某种复杂的for循环来实现这个目标:
split_arr = []
for i in range(1, len(b)):
fbin = []
for amp in a:
if (amp >= b[i-1]) and (amp < b[i]):
fbin.append(amp)
split_arr.append(fbin)
我有许多需要分割的数组,而且这种方式看起来很丑(仅代表我的个人观点)。是否有更好的方法?
np.searchsorted
,因为我想更好地理解它。谢谢。 - rocksNwavesa
没有排序,那么您需要考虑排序的成本。仍然可能是最有效的方法,特别是对于大数组。 - Julien