Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 笨拙的数组:沿命名轴使用布尔掩码的奇特索引_Arrays_Python 3.x_Numpy_Python Xarray_Awkward Array - Fatal编程技术网

Arrays 笨拙的数组:沿命名轴使用布尔掩码的奇特索引

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.

我有一个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.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()对于大型阵列来说速度较慢。如果您有时间回答,请告诉我是否有更有效的方法。)