【发布时间】:2016-12-29 19:38:19
【问题描述】:
这是我打算做的一个例子。我有输入数据,如下所示:
data = array([0,1,2,3,4,5,6,7,8,9])
我需要做的是总结前两个值,然后是接下来的两个值,依此类推。所以结果应该如下。
result = array([1,5,9,13,17])
这就是我所说的“挤压”
我有一个大小为 4096 的 numpy 数组。我需要将数组压缩到 2048,1024 或 512 的大小。 它实际上是能谱,其中阵列的索引给出了 ADC 通道号。该值给出光子计数。 为此,这就是我所做的。
# tdspec is input array of size 4096
spec_bin_size = 1024
spect = n.zeros(spec_bin_size)
i = 0
j=0
interval = 4096/spec_bin_size
while j < spec_bin_size:
a = n.sum(tdspec[i:i+interval])
spect[j] = a
i = i+interval
j = j+1
效果很好,但现在我需要在多个光谱上运行这个循环,我担心它会很慢。 谁能告诉我是否有一个 numpy/scipy 操作可以做到这一点?
【问题讨论】:
-
FWIW,numpy 和 scipy 中使用的“squeeze”一词往往表示“尺寸为 1 的条带尺寸”,因此
np.array([[[1, 2, 3, 4]]])被压缩为np.array([1, 2, 3, 4]) -
谢谢你的信息你能告诉我问题中提到的操作应该叫什么吗?
-
“sum-pooling”或“binning”可能是一个更好的词