可以使用 .reshape(-1)
将 2D 数组重新整形为 1D 数组。例如:
>>> a = numpy.array([[1, 2, 3, 4], [5, 6, 7, 8]])
>>> a.reshape(-1)
array([[1, 2, 3, 4, 5, 6, 7, 8]])
通常, array[-1]
表示最后一个元素。但是 -1 在这里意味着什么?
原文由 user2262504 发布,翻译遵循 CC BY-SA 4.0 许可协议
可以使用 .reshape(-1)
将 2D 数组重新整形为 1D 数组。例如:
>>> a = numpy.array([[1, 2, 3, 4], [5, 6, 7, 8]])
>>> a.reshape(-1)
array([[1, 2, 3, 4, 5, 6, 7, 8]])
通常, array[-1]
表示最后一个元素。但是 -1 在这里意味着什么?
原文由 user2262504 发布,翻译遵循 CC BY-SA 4.0 许可协议
4 回答4.4k 阅读✓ 已解决
4 回答3.8k 阅读✓ 已解决
1 回答3k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
1 回答4.5k 阅读✓ 已解决
1 回答3.8k 阅读✓ 已解决
1 回答2.8k 阅读✓ 已解决
提供新形状的满足标准是 “新形状应与原始形状兼容”
numpy 允许我们将新形状参数之一指定为 -1(例如:(2,-1) 或 (-1,3) 但不是 (-1, -1))。它只是意味着它是一个未知的维度,我们希望 numpy 能够弄清楚它。 numpy 将通过查看 “数组的长度和剩余维度” 并确保它满足上述标准来计算这一点
现在看例子。
现在尝试用 (-1) 重塑。结果新形状为 (12,) 并且与原始形状 (3,4) 兼容
现在尝试用 (-1, 1) 重塑。我们提供的列为 1 但行为 unknown 。所以我们得到结果新形状为 (12, 1)。再次与原始形状 (3,4) 兼容
以上与
numpy
advice/error message一致,对单个feature使用reshape(-1,1)
;即单列新形状为 (-1, 2)。未知行,第 2 列。我们得到结果新形状为 (6, 2)
现在试图将列保持为未知。新形状为 (1,-1)。即,行为 1,列未知。我们得到结果新形状为 (1, 12)
以上与
numpy
建议/错误信息一致,对单个样本使用reshape(1,-1)
;即单排新形状 (2, -1)。第 2 行,列未知。我们得到结果新形状为 (2,6)
新形状为 (3, -1)。第 3 行,列未知。我们得到结果新形状为 (3,4)
最后,如果我们尝试提供未知的两个维度,即新形状(-1,-1)。它会抛出一个错误