gpt4 book ai didi

python - 为什么 Numpy 有时会忽略数组的维度

转载 作者:太空宇宙 更新时间:2023-11-03 15:03:35 28 4
gpt4 key购买 nike

我是 Python 的初学者。我曾经大量使用 matlab。现在我正在转向 python。我对数组的维度有疑问。

我导入 Numpy

我首先创建一个数组 X,然后使用一些嵌入式函数(例如求和)来处理我的数组。最终,当我尝试检查数组 X 的维数时,它变成了:X.shape,输出 (81,)。数字 81 是我所期望的,但我也希望 2nd 维度是 1,而不是只是省略。这让我很不舒服,即使我直接输入X,它输出正确,即一列和X中的数字都符合预期。

然后当我使用另一个数组 Y 时,它实际上具有 Y.shape,输出 (81,1),然后如果我键入 X*Y,我希望它看到一个维度 (81,1) 的数组,但是,我看到了一个维度为 (81,81) 的数组。

我不知道产生这个结果的基础机制是什么。

我解决这个问题的方法很笨。我首先创建一个新数组 C = zeros((81,1)),因此 C 从字面上看具有维度 (81,1),然后我通过键入 C[:,0]=X 将我的 X 分配给 C,然后输入 C.shape = (81,1)。请注意,如果我键入 C=X,则 C.shape=(81,),这又回到了我的问题。所以我可以解决我的问题,但我确信有更好的方法来解决我的问题,而且我也不明白为什么 python 会产生类似 (81,) 的东西,而省略了第二个维度。

最佳答案

Numpy 不会忽略数组的维度。它是为多维数组(不仅仅是 1d 或 2d 数组)构建的库,因此它对不同维度的数组进行了非常明确的区分(它不能假设任何数组只是更高维度数组的退​​化形式,因为数字从概念上讲,维数是无限的)。

  • 维度为 (81, 1) 的数组是 2d 数组,第二维度的 等于 1 .

  • 维度为 (81, ) 的数组只是一个 1d 数组。


当您编写 C[:,0] 时,您指的是一个列。因此

  • 如果您编写 C[: 0] = X,您就是将一列分配给 C 的列之一(这恰好是唯一的一个),因此改变C的维度。

  • 如果您编写 C = X,则表示 C 现在也是一个列,因此正在更改 C 的维度。

关于python - 为什么 Numpy 有时会忽略数组的维度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35330282/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com