python - numpy 数组 reshape 添加维度

标签 python arrays numpy reshape

好吧,我是一个(非常)新手 Python 用户,但我正在尝试将一段 Python 代码翻译成 R,但我遇到了一个令人困惑的数组 reshape 问题。

让我们制作一些示例数据:

X1 = np.array([[-0.047, -0.113, 0.155, 0.001],
        [0.039, 0.254, 0.054, 0.201]], dtype=float)

In:X1
Out:
array([[-0.047, -0.113, 0.155, 0.001],
        [0.039, 0.254, 0.054, 0.201]])
In:X1.shape
Out: (2,4)

好的,我制作了一个 2 行 4 列的二维数组。我对此很满意。这行代码引起了混淆:

X2 = X1.reshape((2, -1, 1))

In: X2
Out:
array([[[-0.047],
        [-0.113],
         [0.155],
         [0.001]],

         [0.039],
         [0.254],
         [0.054],
         [0.201]]])

In: X2.shape
Out: (2, 4, 1)

所以我知道我添加了一个额外的维度(我认为是 reshape 命令中的第 3 个数字 1),但我不明白这还做了什么。形状暗示它仍然有 2 行和 4 列,但显然其他东西发生了变化。我在这里的动机再次是在 R 中执行相同的操作,但直到我知道我明白我在这里转换的内容之前,我被困住了。 (如果这是一个可怕的问题,请原谅我,我昨天才开始学习 Python!)

最佳答案

通过 reshape(2, -1, 1) 您不仅添加了一个新维度。你说过

* the 1st dimension should be of size 2
* the 3rd dimension should be of size 1
* the 2nd should be whatever remains

因此,唯一有效的选项是 4。如果您只想向现有矩阵添加新维度,您应该执行类似 x[:, np.newaxis, :] 的操作(确切用法取决于你想要的输出格式)

关于python - numpy 数组 reshape 添加维度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41851559/

相关文章:

解析此字符串的 Pythonic 方式?

python - BeautifulSoup:如何用元素标签替换元素中的值?

Python Gtk3 控制按钮大小

arrays - 多维数组不允许我通过循环赋值?

c - 将参数解析为数组

python - 计算稀疏矩阵的相似度

python - 如何将两个二维数据框合并为一个多索引多维 Pandas 数据框?

python - 在垂直条 matplotlib 和 python 中绘制像素

python - 获取列表之间第一个和最后一个公共(public)元素索引的最快方法

javascript - 使用过滤器方法从数组中删除值