gpt4 book ai didi

python - 为什么 Numpy 有维度 (n,) 而不是 (n,1) 只有

转载 作者:太空狗 更新时间:2023-10-30 01:01:16 27 4
gpt4 key购买 nike

<分区>

我对这个很好奇有一段时间了。我可以忍受,但如果不小心,它总是会咬我,所以我决定把它贴在这里。假设以下示例(Numpy 版本 = 1.8.2):

a = array([[0, 1], [2, 3]])
print shape(a[0:0, :]) # (0, 2)
print shape(a[0:1, :]) # (1, 2)
print shape(a[0:2, :]) # (2, 2)
print shape(a[0:100, :]) # (2, 2)

print shape(a[0]) # (2, )
print shape(a[0, :]) # (2, )
print shape(a[:, 0]) # (2, )

我不知道别人怎么想,但我觉得结果不一致。最后一行是列向量,而倒数第二行是行向量,它们应该有不同的维度——在线性代数中它们是这样的! (第 5 行是另一个惊喜,但我暂时忽略它)。考虑第二个例子:

solution = scipy.sparse.linalg.dsolve.linsolve.spsolve(A, b) # solution of dimension (n, )
analytic = reshape(f(x, y), (n, 1)) # analytic of dimension (n, 1)
error = solution - analytic

现在错误的维度是 (n, n)。是的,在第二行我应该使用 (n, ) 而不是 (n, 1),但是为什么呢?我以前经常使用 MATLAB,其中一维向量具有维度 (n, 1),linspace/arange 返回维度数组 (n, 1),并且永远不存在 (n, )。但是在 Numpy 中 (n, 1) 和 (n, ) 并存,并且有很多单独处理维度的函数:atleast、newaxis 和 reshape 的不同用途,但对我来说这些函数更多的是困惑而不是帮助。如果一个数组打印成 [1,2,3],那么直觉上维度应该是 [1,3] 而不是 [3,],对吗?如果 Numpy 没有 (n, ),我只能看到清晰度的提高,而不是功能的损失。

所以这背后一定有一些设计原因。我一直在不时地寻找,没有找到明确的答案或报告。有人可以帮助澄清这种困惑或为我提供一些有用的引用资料吗?非常感谢您的帮助。

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