Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/303.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
Python ValueError:无法将输入数组从形状(13,41)广播到形状(13)_Python_Arrays_Numpy - Fatal编程技术网

Python ValueError:无法将输入数组从形状(13,41)广播到形状(13)

Python ValueError:无法将输入数组从形状(13,41)广播到形状(13),python,arrays,numpy,Python,Arrays,Numpy,我正在尝试使用tslearn库来分析音频numpy文件。该文件有一个45K行45K音频样本和一列,但每行有一个嵌套对象N,13。因此,每个样本的长度是不同的,而特征是相同的13个特征。我想将它们全部拉伸到93行,这意味着如果我打印其中任何一行的形状,它将返回93,13 数据示例: 数据集中的第一个嵌套对象,形状43,13 数据集中的第二个嵌套对象,形状30,13 我尝试使用此tslearn库: 但它只会更改列而不是行。所以基本上,如果我有一个数组是44,13,它会将数组形状改为44,93,而

我正在尝试使用tslearn库来分析音频numpy文件。该文件有一个45K行45K音频样本和一列,但每行有一个嵌套对象N,13。因此,每个样本的长度是不同的,而特征是相同的13个特征。我想将它们全部拉伸到93行,这意味着如果我打印其中任何一行的形状,它将返回93,13

数据示例: 数据集中的第一个嵌套对象,形状43,13

数据集中的第二个嵌套对象,形状30,13

我尝试使用此tslearn库:

但它只会更改列而不是行。所以基本上,如果我有一个数组是44,13,它会将数组形状改为44,93,而不是93.13。因此,我尝试将数组旋转90度并重新进行分析,但由于数据集本身只有1D和45K嵌套对象,因此我必须创建一个空列表,使用for loop取出每个对象,将它们旋转90度并将它们放回列表。然后我尝试将列表更改回数组,因为tslearn.preprocessing.TimeSeriesSampler只接受数组作为参数。但是,它告诉我,在尝试将列表传输回数组时,“ValueError:无法将输入数组从形状13,41广播到形状13”

import numpy as np
spoken_train = np.load("spoken_train.npy", allow_pickle=True) 
lis = []
  for i in range(len(spoken_train)):
  lis.append(np.rot90(spoken_train[i])) 
myarray = np.asarray(lis)
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-65-440f2eba9eba> in <module>
      2 for i in range(len(spoken_train)):
      3     lis.append(np.rot90(spoken_train[i]))
----> 4 myarray = np.asarray(lis)

/anaconda3/lib/python3.7/site-packages/numpy/core/numeric.py in asarray(a, dtype, order)
    536 
    537     """
--> 538     return array(a, dtype, copy=False, order=order)
    539 
    540 

ValueError: could not broadcast input array from shape (13,41) into shape (13)

我该怎么办?如果有任何更简单的方法来旋转嵌套数组,请让我也知道。谢谢大家!

这是否符合要求:

lis = []
for i in range(len(spoken_train)):
    item = spoken_train[i]
    lis.append( item + np.zeros((1,item.shape[-1])))
myarray = np.concatenate(lis) 

但循环中的项必须具有相同的列数。根据您的示例,Speaked_train中的所有数组的最后一个维度都必须为13。

您能否包含一些测试数据以及正在使用的所有数组的形状?Hi@warped,感谢您的建议,我刚刚打印了数据集中的前两个嵌套对象,并将它们添加到问题中。总共有四万五千个。正如您所看到的,它们的行数不同,但列数相同。所有这些数组中的行数最多是93行,这就是为什么我将它们全部列为93行。请考虑添加一些信息或解释来伴随您的答案。
lis = np.copy(z) #since they have the same number of arrays
for i in range(len(spoken_train)):
  lis[i] = np.rot90(spoken_train[i])