required_time_stamps
包含5911个时间戳time_based_mfcc_feature
包含5911个样本,每个样本具有20个mfcc特征。
因此,如果您查看time_based_mfcc_feature
,它将如下所示:
row1 val2 val3 ... val 20
row2 val2 val3 ... val 20
row3 val2 val3 ... val 20
.
.
.
row5911 val2 val3 ... val 20
print type(required_time_stamps)
print required_time_stamps.shape
(5911,)
print type(time_based_mfcc_feature)
print time_based_mfcc_feature.shape
(5911, 20)
我想将这两者结合起来,以便:
在R中,我可以简单地
time_based_mfcc_feature<-as.data.frame(time_based_mfcc_feature)
required_time_stamps<-as.data.frame(required_time_stamps)
new_dataframe <- merge(required_time_stamps,time_based_mfcc_feature)
View(new_dataframe)
我如何在python中实现这一点?
因此最终数据如下所示:
time1 row1 val2 val3 ... val 20
time2 row2 val2 val3 ... val 20
time3 row3 val2 val3 ... val 20
.
.
.
time5911 row5911 val2 val3 ... val 20
其中,这些时间1到时间5911只是所需的\u time\u标记中包含的值
我试过:
mfcc_features_with_times= np.hstack((required_time_stamps,time_based_mfcc_feature))
但出现了这个错误
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-41-ce462d805743> in <module>()
----> 1 mfcc_features_with_times= np.hstack((required_time_stamps,time_based_mfcc_feature))
/usr/local/lib/python2.7/dist-packages/numpy/core/shape_base.pyc in hstack(tup)
289 # As a special case, dimension 0 of 1-dimensional arrays is "horizontal"
290 if arrs and arrs[0].ndim == 1:
--> 291 return _nx.concatenate(arrs, 0)
292 else:
293 return _nx.concatenate(arrs, 1)
ValueError: all the input arrays must have same number of dimensions
然后我尝试转置:
t = required_time_stamps.transpose
mfcc_features_with_times= np.hstack((t,time_based_mfcc_feature))
但同样的错误:
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-43-47cddb391d3f> in <module>()
----> 1 mfcc_features_with_times= np.hstack((t,time_based_mfcc_feature))
/usr/local/lib/python2.7/dist-packages/numpy/core/shape_base.pyc in hstack(tup)
289 # As a special case, dimension 0 of 1-dimensional arrays is "horizontal"
290 if arrs and arrs[0].ndim == 1:
--> 291 return _nx.concatenate(arrs, 0)
292 else:
293 return _nx.concatenate(arrs, 1)
ValueError: all the input arrays must have same number of dimensions
我还研究了:Numpy将2D数组与1D数组连接起来,但我认为这是另一回事。
目标是将这些数据逐行提供给keras神经网络。
我还有与5911时间戳对应的5911标签,稍后我会连接它们。
更新:根据我尝试的评论中的链接,
>>> a = np.array([[1,2,3], [2,3,4]])
>>> a
array([[1, 2, 3],
[2, 3, 4]])
>>> b = np.array([[1,2,3,0], [2,3,4,0]])
>>> b
array([[1, 2, 3, 0],
[2, 3, 4, 0]])
>>> c= np.hstack((a,b))
>>> c
array([[1, 2, 3, 1, 2, 3, 0],
[2, 3, 4, 2, 3, 4, 0]])
在这个例子中,堆叠是可行的,但我不知道为什么相同的逻辑不适用于我。
更新:我按照cmaher的建议解决了这个问题:
mfcc_features_with_times= np.hstack((required_time_stamps[:,None],time_based_mfcc_feature))
然而,只有当两者具有相同的维度时,这才是真的。在大多数情况下,我的结果是数组A具有形状(8400,),数组B具有形状(8399,21)。
如何截断/删除A的最后几行,以便A和B具有相同的形状,例如(8399,)和(8399,21)。请告知。
更新错误,而SLICINg:目前当我做A=A[: B. form[0],:]
其中A=new_labels_np_array
B=time_based_mfcc_feature
` 64 if len(new_labels_np_array) > len(time_based_mfcc_feature):
---> 65 new_labels_np_array = new_labels_np_array[:time_based_mfcc_feature.shape[0],:]
66 elif len(time_based_mfcc_feature)>len(new_labels_np_array):
67 time_based_mfcc_feature = time_based_mfcc_feature[:,new_labels_np_array.shape[0],:]
IndexError: too many indices for array`
既然您已经在线程numpy-concatenate-2d-arrays-with-1d-array中找到了问题第一部分的答案,那么我将回答第二个问题:
如何截断/删除A的最后几行,以便A和B具有相同的形状,例如(8399,)和(8399,21)。请告知。
可以像分割列表一样分割numpy数组。因此,沿轴0将2D阵列修剪为a大小。
B = B[:A.shape[0],:]
这会修剪数组的末尾。如果您想在开始时修剪,即丢弃不适合形状的前几行而不是最后一行:
B = B[-A.shape[0]:,:]
编辑:您的评论暗示您事先不知道哪个数组更长。在这种情况下:
trim = min(A.shape[0], B.shape[0])
A = A[:trim]
B = B[:trim,:]
或分别
trim = min(A.shape[0], B.shape[0])
A = A[-trim:]
B = B[-trim:,:]
所以,我正在尝试匹配 2 个不同的数组。如果相同的单元格匹配,我想使用 .slice 方法从一个数组中删除该单元格。 编辑:我想做的是从数组1中移除一个数字,如果数组2包含一个匹配的数字。代码现在的工作方式是只删除1个条目。我要删除第一个数组中的所有条目。 我尝试运行这个,在控制台日志下,array1没有变化。似乎拼接方法没有删除任何单元格。我搜索了SE,但没有找到任何可以帮助我的东西。
问题内容: 我想知道从ArrayList转换为Array是否安全/建议?我有一个文本文件,每行一个字符串: 我想将它们读入数组列表,然后将其转换为数组。建议这样做/合法吗? 谢谢 问题答案: 是的,将转换为是安全的。一个好主意取决于您的预期用途。您需要提供的操作吗?如果是这样,请将其保留为。否则转换掉! 输出
问题内容: 我需要将几个数组合并为一个数组。描述我要寻找的内容的最好方法是将阵列“交织”为单个阵列。 例如,从数组#1中取出第一项,然后追加到最终数组中。从数组2获取项目1,然后追加到最终数组。从数组#1获得第二项并追加…等。 最终的数组如下所示: array#1.element#1 array#2.element#1。。。 “踢球者”是各个阵列可以具有各种长度。 是否有更好的数据结构要使用? 问
问题内容: 在知道数组索引的情况下,使用Arrays或HashMaps更好(在性能方面)吗?请记住,示例中的“对象数组/映射”只是一个示例,在我的真实项目中,它是由另一个类生成的,因此我不能使用单个变量。 ArrayExample: HashMapExample: HashMap看起来好得多,但我确实需要在此方面具有性能,因此具有优先权。 编辑: 那么是数组,仍然欢迎建议 编辑: 我忘了提,Arr
我正在尝试减少阵列流的并行流 我知道合并器用于合并并行流。。但它并没有像我预期的那样工作,因为我得到了如下重复结果:- 那么为什么结果是重复的呢?在累加器中使用数组列表是否线程安全?
首先,我知道Firestore是如何工作的,并且花了很多时间评估不同的方法以获得良好的结构。但我仍在考虑以下情况: 有一个已知食谱的数据库。用户可以添加菜谱,但必须确认它们是真正的菜谱,而不仅仅是一些变体。因此,每个用户都可以从用户生成的食谱列表中选择receipes,说明他们知道如何烹饪(或添加新的)。 现在,我希望用户与其他人分享他们的receipes列表,但我不确定如何最好地使用Firest