我试图了解这两个输出之间的区别(如果有)。
array([array([203., 164., 87., ..., 1., 1., 0.]),
array([39., 44., 40., ..., 40., 30., 21.]),
array([152., 144., 133., ..., 36., 36., 36.])], dtype=object)
和
array([[ 0., 0., 5., ..., 0., 0., 0.],
[ 0., 0., 0., ..., 10., 0., 0.],
[ 0., 0., 0., ..., 16., 9., 0.],
...,
[ 0., 0., 1., ..., 6., 0., 0.],
[ 0., 0., 2., ..., 12., 0., 0.],
[ 0., 0., 10., ..., 12., 1., 0.]])
对我来说,这两个结构都是2D阵列。但是由于某种原因,其中之一的打印方式有所不同。
我正在尝试将第一个结构提供给复杂的函数(svm.SVC.fit
)。第二个有效,但第一个无效:
设置具有序列的数组元素
尽管它们似乎与我完全一样..
答案 0 :(得分:1)
正如我在评论中指出的那样,它们不是两个二维数组。第一个是形状为(N, )
的一维数组。您正在尝试创建具有可变长度子数组的numpy数组。发生这种情况时,numpy将数组的类型强制为object
并使其成为一维。 您应该不惜一切代价避免这种情况,因为这样做一开始就消除了使用numpy
的许多好处。
一种常见的方法是填充子数组,使它们都具有统一的长度,但是无论做什么,都不要对锯齿状的数组使用numpy
。