Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.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 更改numpy数组的形状和数据类型_Python_Arrays_Numpy_Shape - Fatal编程技术网

Python 更改numpy数组的形状和数据类型

Python 更改numpy数组的形状和数据类型,python,arrays,numpy,shape,Python,Arrays,Numpy,Shape,我有一个numpy数组的列表,其中每个数组在第一维中都有一个dtype=object(3个对象),其中有不同形状的数组,例如(200,10)、(100,10)、(50,10) 虽然这样做很好,但当三个对象恰好获得相同的第一维度(例如(200,10)、(200,10)、(200,10)、(200,10)),数组会自动从dtype=object变为dtype=float)。因此,我最终得到了这些数组中的一个,是(3200,10),而不是(3,)对象类型 当我尝试将列表设置为numpy数组时,会出现一

我有一个numpy数组的列表,其中每个数组在第一维中都有一个dtype=object(3个对象),其中有不同形状的数组,例如(200,10)、(100,10)、(50,10)

虽然这样做很好,但当三个对象恰好获得相同的第一维度(例如(200,10)、(200,10)、(200,10)、(200,10)),数组会自动从dtype=object变为dtype=float)。因此,我最终得到了这些数组中的一个,是(3200,10),而不是(3,)对象类型

当我尝试将列表设置为numpy数组时,会出现一个错误,因为其中一个数组的形状不同


有什么解决方法吗?

您可以使用
shape=(3,)
dtype=object
预先分配一个
None
s数组,并分配每个元素。为什么您首先要创建一个
object
数组?在大多数情况下,这并不是你真正想要的。你能不能把你创建的代码和你以后想如何使用它的代码贴出来,这样我们就可以更好地了解到底发生了什么?我认为Yakym的想法是可行的。我不想创建一个对象数组。这是自动完成的,因为3个阵列具有不同的第一维度。但有时候,碰巧它们有相同的形状,所以numpy的行为就像它是一个完整的形状(3,x,x)。这在整个列表中造成了不一致。抱歉,无法发布代码。我给出了一个简单的例子说明发生了什么。
numpy
优先创建多维数字数组,当元素大小不同时,使用
object
dtype。预分配是确保结果为所需对象数据类型和形状的最简单方法。