我有多个表示音频数据的不同大小的一维 numpy 数组。由于它们的大小不同(例如(8200,)
、(13246,)
、(61581,)
),我不能将它们作为 1 个数组与 numpy 堆叠。尺寸差异太大,无法进行0-padding。
我可以将它们保存在列表或字典中,然后使用for
循环遍历它们以进行计算,但我希望我可以以 numpy 样式处理它。在变量上调用 numpy 函数,而无需编写 for 循环。就像是:
np0 = np.array([.2, -.4, -.5])
np1 = np.array([-.8, .9])
np_mix = irregular_stack(np0, np1)
np.sum(np_mix)
# output: [-0.7, 0.09999999999999998]
看着这张 Dask 图片,我想知道我是否可以用 Dask 做我想做的事。
到目前为止,我的尝试是这样的:
import numpy as np
import dask.array as da
np0 = np.array([.2, -.4, -.5])
arr0 = da.from_array(np0, chunks=(3,))
np1 = np.array([-.8, .9])
arr1 = da.from_array(np1, chunks=(2,))
# stack them
data = [[arr0],
[arr1]]
x = da.block(data)
x.compute()
# output: ValueError: ('Shapes do not align: %s', [(1, 3), (1, 2)])
问题
- 我是否误解了如何使用 Dask?
- 如果可能的话,我该如何做我的
np.sum()
例子? - 如果可能的话,它实际上是否比高端单台 PC 上的 for 循环更快?