【发布时间】:2023-02-02 21:10:58
【问题描述】:
X_flatten = X.reshape(X.shape[0], -1).T
没想到代码中的-1。
【问题讨论】:
-
这回答了你的问题了吗? What does -1 mean in numpy reshape?
X_flatten = X.reshape(X.shape[0], -1).T
没想到代码中的-1。
【问题讨论】:
-1 用于指定整形数组中的列数,其值将根据 X 中的元素总数和 X.shape[0] 的值推断得出。因此,当 X 被整形时,-1 将被自动替换为适当的值,以确保整形数组中的元素总数不变。
例如,如果 X.shape is (100, 200, 300),则 X.shape[0]=100。用(X.shape[0], -1) 重塑 X 后,重塑 X 的形状将为 (100, 60000)。 -1 已被推断为 60000,因为 60000 = 200 * 300。
【讨论】:
我们可以通过查看 documentation of numpy 来弄清楚。您可以通过谷歌搜索 numpy reshape documentation 找到该页面。
有这部分,我发现CTRL键F搜索-1。
新形状:整数或整数元组
新形状应与原始形状兼容。如果是整数,则结果将是该长度的一维数组。一外形尺寸可以是-1。在这种情况下,该值是根据数组的长度和剩余维度推断出来的。在页面的下方,有一个示例:
>>> np.reshape(a, (3,-1)) # the unspecified value is inferred to be 2 array([[1, 2], [3, 4], [5, 6]])因此我们可以得出结论,
-1被推断为任何有意义的数字,因此重塑数组中的元素数量与原始数组中的元素数量相同。这也是为什么只有一个的维度可能是-1——如果有多个,就不可能知道你想要什么。
【讨论】:
numpy.reshape 具有三个参数:(a, newshape, order='C')。这里-1定义了第二个参数:newshape
"newshape: 整数或整数元组
新形状应与原始形状兼容。如果是整数,则结果将是该长度的一维数组。一个形状维度可以是 -1。在这种情况下,该值是根据数组的长度和剩余维度推断出来的”
【讨论】: