>>> import numpy as np
>>> n_lines = 10
>>> data = np.arange(n_lines*3*32*32)
>>> data.reshape(n_lines + 1 , 3*32*32) # notice the + 1 !!
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: total size of new array must be unchanged
重塑矩阵时,新形状应与原始形状兼容。在
为了动态地确保这一点,这段代码使用
data.shape
[0]来获得原始矩阵的行数(即data
的第一维)。知道了这一点,它将矩阵重塑为一个定义为:行| 3 | 32 | 32的四维矩阵。在正如您所指出的,数组本身可能已经被使用,所以这段代码并没有检查行数的有效性,而是使用行计数来确保在整形过程中不会将行元素重新排列到新列中。在
假设有一个数组,其中有
N
行,每行是一个3*32*32=3072的长数组。如果您不确定有多少行,但知道要将其余的重塑为(3, 32, 32)
,那么可以使用指定的行。在否则会出现错误:
但如果您使用正确的号码:
^{pr2}$有一种方法是,如果您确切地知道最终的维是如何组织的,但是您不确切地知道有多少行;例如
相关问题 更多 >
编程相关推荐