Arrays 笨拙的数组:沿命名轴使用布尔掩码的奇特索引
我有一个2D音频数据集。这些音频片段长度不同,因此我使用的是笨拙的数组。通过布尔掩码,我只想返回包含语音的部分 表掩码尝试Arrays 笨拙的数组:沿命名轴使用布尔掩码的奇特索引,arrays,python-3.x,numpy,python-xarray,awkward-array,Arrays,Python 3.x,Numpy,Python Xarray,Awkward Array,我有一个2D音频数据集。这些音频片段长度不同,因此我使用的是笨拙的数组。通过布尔掩码,我只想返回包含语音的部分 表掩码尝试 将numpy导入为np 像aw一样进口 awk=aw.fromiter([{“ch0”:np.array([0,1,2]),“ch1”:np.array([3,4,5]), {“ch0”:np.array([6,7]),“ch1”:np.array([8,9])}] #[{'ch0':[0.0,1.0,2.0],'ch1':[3,4,5]}, #{'ch0':[6.0,0.
将numpy导入为np
像aw一样进口
awk=aw.fromiter([{“ch0”:np.array([0,1,2]),“ch1”:np.array([3,4,5]),
{“ch0”:np.array([6,7]),“ch1”:np.array([8,9])}]
#[{'ch0':[0.0,1.0,2.0],'ch1':[3,4,5]},
#{'ch0':[6.0,0.7],'ch1':[8,9]}]
awk_mask=aw.fromiter([{“op”:np.array([False,True,False]),“cl”:np.array([True,True,False]),
{“op”:np.array([True,True]),“cl”:np.array([True,False])})
#[{'cl':[True,True,False],'op':[False,True,False]},
#{'cl':[True,False],'op':[True,True]}]
awk[awk_面具]
#TypeError:无法将数据类型[('cl','O'),('op','O')]解释为奇特的索引或掩码
似乎表
不能用于奇特的索引
阵列掩码尝试
努比当量
nparr=np.arange(0,6).重塑((2,-1))
#数组([[0,1,2],
# [3, 4, 5]])
npmask=np.array([True,False,True])
nparr[:,npmask]
#数组([[0,2],
# [3, 5]])
表版本尝试;失败
awk[:,npmask]
#NotImplementedError:通过表的多维索引(TODO:需要[0,n)->[0,m)->“表”->…)
似乎多维选择尚未实现
JaggedArray-Numpy面具版本;有效
jarr=aw.fromiter(nparr)
#
jarr[:npmask]
#数组([[0,2],
# [3, 5]])
JaggedArray-JaggedArray遮罩版本;有效
jmask=aw.fromiter(npmask)
#数组([True,False,True])
jarr[:,jmask]
#数组([[0,2],
# [3, 5]])
问题
- 如何使用
或命名维度(如)进行有效的布尔掩码选择表
表中的多维选择是在
笨拙数组中实现还是仅在
笨拙-1.0中实现
print(“numpy版本:”,np.\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
打印(“熊猫版:”,pd.uuuuuuuuuuuuuuuu版)#熊猫版:0.25.3
打印(“笨拙版本:,aw.uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
这不适用于命名数组维度,但仅适用于Jaggedarray,可以进行遮罩选择:
jarr_2d=aw.fromiter([[np.array([0,1,2]),np.array([3,4,5]),
[np.数组([6,7]),np.数组([8,9])]
#
jarr_2d_mask=aw.fromiter([[np.array([False,True,False]),np.array([True,True,False]),
[np.array([True,True]),np.array([True,False])]]
#
jarr_2d[jarr_2d_面具]
#
不确定此代码是否有效?尤其是与仅使用Numpy数组的奇特索引相比?
fromiter
在笨拙的0.x中应被视为低效(但在笨拙的1.x中则不是)。在笨拙的0.x@JimPivarski中,什么是有效的方法?此外,这并不能解决最初的问题,因为它不适用于表
数组。(我使用了注释,而不是答案,因为我没有时间完全回答问题,但想提供一些信息。)(由于我发布了一个很长的问题,不详细阅读所有内容是很常见的。因此,我想发表我的评论,这不是最终的答案。@JimPivarski感谢您提供了哪怕是一点额外的信息,事实上这是。fromiter()对于大型阵列来说速度较慢。如果您有时间回答,请告诉我是否有更有效的方法。)