Python 为什么是numpy';s原点在左上角,与数学惯例不同?

Python 为什么是numpy';s原点在左上角,与数学惯例不同?,python,numpy,Python,Numpy,当你做数学时,你有一个矩阵,通常来说,矩阵在左下角有一个原点: 在python中使用numpy时,如果有一个数组,则该数组在左上角有一个原点: a = np.reshape(np.arange(9),(3,3)) a >> array([[0, 1, 2], [3, 4, 5], [6, 7, 8]]) a[0,0] 这给你…0 为什么numpy是这样的,因为numpy应该是用python进行线性运算的软件包?您的图形不是矩阵,而是笛卡

当你做数学时,你有一个矩阵,通常来说,矩阵在左下角有一个原点:

在python中使用numpy时,如果有一个数组,则该数组在左上角有一个原点:

a = np.reshape(np.arange(9),(3,3))
a

>> array([[0, 1, 2],
          [3, 4, 5],
          [6, 7, 8]])

a[0,0]
这给你…0


为什么numpy是这样的,因为numpy应该是用python进行线性运算的软件包?

您的图形不是矩阵,而是笛卡尔坐标系。正如您所说,在笛卡尔坐标系中,第一个坐标表示水平位置,第二个坐标表示垂直位置,向上移动页面意味着第二个坐标增加。位置
(0,0)
位于许多图形的左下角,但它可以调整到任何位置,因为每个坐标都可能是负数

然而,在传统矩阵中,第一个坐标是行或垂直位置,第二个坐标是列或水平位置。向上一页意味着第一个坐标的减少。位置
(1,1)
是任何矩阵的左上角,因为每个坐标必须是正整数。以下是维基百科的图片:


Numpy遵循矩阵约定,尤其是在其打印中,而不是笛卡尔约定。(为了让它更令人困惑,还有一个额外的常用惯例,用于图形,但我将在这里跳过。)

不,这不是数学中矩阵的惯例。矩阵甚至没有“原点”。将矩阵和坐标平面(象限)混合在一起。打印
a
时,会看到数组、行和列的字符串表示,就像表格一样。二维数组实际上没有“左上角”、“右下角”等属性。我喜欢它。谢谢