我写了一些程序来测试numpy.array嵌套列表转换是否有效,我发现它的工作应尽可能简单。
我试图在一个真实的例子(机器学习数组)上做同样的事情,但是它停止了工作。由于数据太大,我无法显示全部数据。
让我们假设我有x个嵌套列表:
x是float列表的列表:
type(x), type(x[0]), type(x[0][0]), type(x[0][0][0])
是:
(<class 'list'>, <class 'list'>, <class 'list'>, <class 'float'>)
所有元素均正确输入:
type(x)
<class 'list'>
set(type(a) for a in x)
{<class 'list'>}
set(type(b) for a in x for b in a)
{<class 'list'>}
set(type(c) for a in x for b in a for c in b)
{<class 'float'>}
我这样做:
xa = numpy.array(x)
type(xa), type(xa[0]), type(xa[0][0]), type(xa[0][0][0])
,这种转换会产生奇怪的结果:
(<class 'numpy.ndarray'>, <class 'list'>, <class 'list'>, <class 'float'>)
为什么关闭?为什么有些嵌套列表没有转换?
(<class 'numpy.ndarray'>, <class 'numpy.ndarray'>, <class 'numpy.ndarray'>, <class 'numpy.float64'>)
为什么numpy.array转换失败或未完成-您能否给出一些提示?
我测试了这段代码,它适用于手动创建的y变量:
y = [[[1.0, 2.0, 3.0], [1.0, 2.0, 3.0]], [[1.0, 2.0, 3.0], [1.0, 2.0, 3.0]]]
type(y), type(y[0]), type(y[0][0]), type(y[0][0][0])
(<class 'list'>, <class 'list'>, <class 'list'>, <class 'float'>)
ya = numpy.array(y)
type(ya), type(ya[0]), type(ya[0][0]), type(ya[0][0][0])
(<class 'numpy.ndarray'>, <class 'numpy.ndarray'>, <class 'numpy.ndarray'>, <class 'numpy.float64'>)
y与x完全相同,但是对于x,转换不起作用。可能是什么问题?
如何转换x或修复它以允许像y那样进行转换,因为两者都是相同的嵌套列表?