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

时间:2019-05-24 10:35:42

标签: python arrays numpy

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

数据示例: 数据集中的第一个嵌套对象,形状(43,13) enter image description here

数据集中的第二个嵌套对象,形状(30,13) enter image description here

我尝试使用以下tslearn库:https://tslearn.readthedocs.io/en/latest/gen_modules/preprocessing/tslearn.preprocessing.TimeSeriesResampler.html#tslearn.preprocessing.TimeSeriesResampler

,但只会更改列而不是行。因此基本上,如果我有一个数组(44,13),它将把数组形状更改为(44,93)而不是(93.13)。因此,我尝试将阵列旋转90度并重做分析,但是由于数据集本身仅为一维且带有45K嵌套对象,因此我不得不制作一个空列表,使用for循环取出每个对象,将它们旋转90度,然后将它们放回清单。然后,我尝试将列表改回数组,因为tslearn.preprocessing.TimeSeriesResampler仅接受数组作为参数。但是,它告诉我“ ValueError:在尝试将列表传输回数组时,无法将输入数组从形状(13,41)广播到形状(13)”。

int a  = 1;
long b = a; // compiles due to implicit conversion

我该怎么办?如果有更简单的方法来旋转嵌套数组,请也告诉我。谢谢!

2 个答案:

答案 0 :(得分:0)

这符合要求吗?

item

循环中的spoken_train必须具有相同的列数。根据您的示例,th { position: relative; max-width: 5px; } 中的所有数组的最后一个维数必须为13。

答案 1 :(得分:0)

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])