Arrays 不同大小数组(锯齿数组)的Python集合,Dask?
我有多个不同大小的1-D numpy阵列来表示音频数据。 由于它们的大小不同(例如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_混
(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)])
问题
np.sum()
示例不幸的是,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进行互操作: