Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/349.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 can';t将列表转换为np数组_Python_Arrays_List_Python 3.x_Numpy - Fatal编程技术网

Python Numpy can';t将列表转换为np数组

Python Numpy can';t将列表转换为np数组,python,arrays,list,python-3.x,numpy,Python,Arrays,List,Python 3.x,Numpy,我有一个python列表,其中包括90900个形状为(299299,3)。我试图将此列表转换为numpy数组 X_trains = np.asarray(X_train).reshape((len(X_train),299,299,3)) 但是,这给了我一个错误: ValueError:无法从形状(299299,3)广播输入数组 成形(299) 我假设导致错误的代码部分是np.asarray,有没有办法修复它 完整错误代码: ValueErrorTraceback (most recent c

我有一个python列表,其中包括90900个形状为
(299299,3)
。我试图将此列表转换为numpy数组

X_trains = np.asarray(X_train).reshape((len(X_train),299,299,3))
但是,这给了我一个错误:

ValueError:无法从形状(299299,3)广播输入数组 成形(299)

我假设导致错误的代码部分是np.asarray,有没有办法修复它

完整错误代码:

ValueErrorTraceback (most recent call last)
<ipython-input-34-2ba5db77f6b1> in <module>()
  1 
  2 
----> 3 X_trains = np.asarray(X_train)

/usr/local/lib/python3.4/dist-packages/numpy/core/numeric.py in asarray(a,          dtype, order)
529 
530     """
--> 531     return array(a, dtype, copy=False, order=order)
532 
533 

ValueError: could not broadcast input array from shape (299,299,3) into shape (299,299)
ValueErrorTraceback(最近一次调用上次)
在()
1.
2.
---->3列X_列车=np.asarray(X_列车)
/asarray中的usr/local/lib/python3.4/dist-packages/numpy/core/numeric.py(a、数据类型、顺序)
529
530     """
-->531返回数组(a,数据类型,copy=False,order=order)
532
533
ValueError:无法将输入数组从形状(299299,3)广播到形状(299299)

否,问题是因为
重塑()
函数。
asarray()
函数会将列表转换为正确的Numpy数组,您不需要重塑它

以下是一个例子:

In [1]: a = [[1, 2], [4, 5]]

In [2]: import numpy as np

In [3]: np.asarray(a)
Out[3]: 
array([[1, 2],
       [4, 5]])
如果在转换为Numpy阵列后仍要重塑阵列的形状,则新形状应足以将旧阵列广播到新阵列

您可以获取形状,并查看它是否可转换为您期望的形状:

X_trains = np.asarray(X_train)
old_shape = X_trains.shape

我理解你的问题。没有必要改变它。只要
np.asarray
就行了

X_trains = np.asarray(X_train)
例如:

In [18]: arr_3d
Out[18]: 
array([[[ 0,  1,  2],
        [ 3,  4,  5],
        [ 6,  7,  8]],

       [[ 9, 10, 11],
        [12, 13, 14],
        [15, 16, 17]]])


In [19]: list_of_arr = [arr_3d, arr_3d]

In [20]: arr_4d = np.asarray(list_of_arr)

In [21]: arr_4d.shape
Out[21]: (2, 2, 3, 3)

不,问题显然在
np.asarray
中,我包含了完整的错误代码,希望它能带来更多sense@Wideem这个答案是因为您的列表包含类似的形状列表。但是如果错误是由于
asarray
造成的,这意味着您的子列表不匹配。我想将数据形状设置为4维ensional array(图像文件)(图像数量、高度、长度、颜色通道)@kmario23你说得对!问题是我没有意识到有一些灰度图像,这把事情搞砸了。好吧。很好,你解决了这个问题!