我有以下数据:
weights = [
np.array([np.array([1, 2, 3]), np.array([1, 2, 3])]),
np.array([np.array([1, 2, 3]), np.array([1, 2, 3])]),
np.array([np.array([1, 2, 3]), np.array([1, 2, 3])]),
np.array([np.array([1, 2, 3]), np.array([1, 2, 3])]),
np.array([np.array([1, 2, 3]), np.array([1, 2, 3])]),
]
len_models = len(weights)
len_layers = len(weights[0])
如果我尝试这样重塑数据:x = np.reshape(weights, (len_layers, len_models))
,我得到一个错误:
无法将大小为30的数组整形为形状(2,5)
但是,如果权重具有以下值:
weights = [
np.array([np.array([1, 2, 3]), np.array([1, 2, 3, 4])]),
np.array([np.array([1, 2, 3]), np.array([1, 2, 3, 4])]),
np.array([np.array([1, 2, 3]), np.array([1, 2, 3, 4])]),
np.array([np.array([1, 2, 3]), np.array([1, 2, 3, 4])]),
np.array([np.array([1, 2, 3]), np.array([1, 2, 3, 4])]),
]
重塑操作有效。
为什么会这样呢?
1条答案
按热度按时间taor4pac1#
你应该把形状看成
np.arrays
:为什么整形到
(5,2)
是不可能的,现在应该很明显了。第二种情况:
第三维具有不同的长度(3和4),这创建了将第三维视为“一个”斑点的对象阵列。这也由警告指示:
VisibleDeprecationWarning:不赞成从不规则的嵌套序列(即具有不同长度或形状的列表或元组或ndarray的列表或元组)创建ndarray。如果你打算这样做,你必须在创建ndarray时指定'dtype=object'。np.array([np.array([1,2,3]),np.array([1,2,3,4])])