Python Numpy can';t将列表转换为np数组
我有一个python列表,其中包括90900个形状为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
(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你说得对!问题是我没有意识到有一些灰度图像,这把事情搞砸了。好吧。很好,你解决了这个问题!