Arrays 不同大小数组(锯齿数组)的Python集合,Dask?

Arrays 不同大小数组(锯齿数组)的Python集合,Dask?,arrays,python-3.x,numpy,dask,awkward-array,Arrays,Python 3.x,Numpy,Dask,Awkward Array,我有多个不同大小的1-D numpy阵列来表示音频数据。 由于它们的大小不同(例如(8200,),(13246,),(61581,)),因此我无法将它们与numpy一起堆叠为一个数组。大小差异太大,无法进行0填充 我可以将它们保存在一个列表或字典中,然后使用for循环对它们进行迭代以进行计算,但我更希望我可以用numpy风格进行处理。在变量上调用numpy函数,而不必编写for循环。比如: np0=np.array([.2,-.4,-.5]) np1=np.array([-.8,9]) np_混

我有多个不同大小的1-D numpy阵列来表示音频数据。 由于它们的大小不同(例如
(8200,)
(13246,)
(61581,)
),因此我无法将它们与numpy一起堆叠为一个数组。大小差异太大,无法进行0填充

我可以将它们保存在一个列表或字典中,然后使用
for
循环对它们进行迭代以进行计算,但我更希望我可以用numpy风格进行处理。在变量上调用numpy函数,而不必编写for循环。比如:

np0=np.array([.2,-.4,-.5])
np1=np.array([-.8,9])
np_混合=不规则_堆叠(np0,np1)
np.和(np_混合)
#输出:[-0.7,0.09999999998]

看着这张Dask图片,我想知道我是否可以用Dask做我想做的事情

到目前为止,我的尝试是:

将numpy导入为np
将dask.array导入为da
np0=np.array([.2,-.4,-.5])
arr0=da.from_数组(np0,chunks=(3,))
np1=np.array([-.8,9])
arr1=da.from_数组(np1,chunks=(2,))
#把它们叠起来
数据=[[arr0],
[arr1]]
x=数据块(数据)
x、 计算()
#输出:ValueError:(“形状未对齐:%s”,[(1,3)、(1,2)])
问题
  • 我是否误解了Dask的用法
  • 如果可能的话,我如何执行我的
    np.sum()
    示例
  • 如果可能的话,它实际上比高端单台PC上的for循环快吗

  • 不幸的是,Dask数组遵循Numpy语义,并假设所有行的长度相等


    我不知道Python中有哪一个好的库可以有效地处理今天不规则的数组,所以你可能运气不好。

    我发现这个库
    很难处理数组
    (),它允许不同长度的数组,并且可以满足我的要求:

    import numpy as np
    import awkward
    
    np0 = np.array([.2, -.4, -.5])
    np1 = np.array([-.8, .9])
    varlen = awkward.fromiter([np0, np1])
    # <JaggedArray [[0.2 -0.4 -0.5] [-0.8 0.9]] at 0x7f01a743e790>
    
    varlen.sum()
    # output: array([-0.7,  0.1])
    
    将numpy导入为np
    进口尴尬
    np0=np.array([.2,-.4,-.5])
    np1=np.array([-.8,9])
    varlen=笨拙的.fromiter([np0,np1])
    # 
    varlen.sum()
    #输出:数组([-0.7,0.1])
    
    该库将自己描述为:“像Numpy一样轻松地操作复杂数据结构的数组。”


    到目前为止,它似乎满足了我所需要的一切

    在我的回答中,
    笨拙数组
    库似乎有计划从
    v1.0.0
    与Dask进行互操作: