【问题标题】:What does [i,:] mean in Python?[i,:] 在 Python 中是什么意思?
【发布时间】:2019-06-25 10:58:52
【问题描述】:

所以我已经完成了我必须完成的任务的一部分。作业中只有一部分对我没有任何意义。

我正在做一个线性回归模型,根据其他人的说法,我需要在最后应用ans[i,:] = y_poly,但我从来没有得到答案。

有人可以向我解释一下[i,:] 是什么意思吗?我在网上没有找到任何解释。

【问题讨论】:

  • numpy 切片符号。我还没有找到一个好的副本。如果有人找到了,我已经添加了“python”标签,这样你就可以欺骗...

标签: python python-3.x numpy scikit-learn linear-regression


【解决方案1】:

我认为在这种情况下 [] 表示类对象的索引运算符,可以通过定义 getitem 方法来使用

class A:
    def __getitem__(self, key):
        pass

key 可以是任何东西。在您的情况下,“[1,:]”键是一个包含“1”和一个切片(无,无,无)的元组。如果您的类表示要通过 [] 运算符访问的多维数据,则这样的键可能很有用。其他人建议的答案可能是一个 numpy 数组:

下面是一个快速示例,说明这种多维索引如何工作:

class A:
    values = [[1,2,3,4], [4,5,6,7]]
    def __getitem__(self, key):
        i, j = key
        if isinstance(i, int):
            i = slice(i, i + 1)
        if isinstance(j, int):
            j = slice(j, j + 1)
        for row in self.values[i]:
            print(row[j])

>>>a = A()
>>>a[:,2:4]
[3, 4]
[6, 7]
>>>a[1,1]
[5]
>>>a[:, 2]
[3]
[6]

【讨论】:

    【解决方案2】:

    它特定于numpy 模块,用于大多数数据科学模块。

    ans[i,:] = y_poly
    

    这是将向量分配给 numpy 二维数组的切片(切片分配)。独立示例:

    >>> import numpy
    >>> a = numpy.array([[0,0,0],[1,1,1]])
    >>> a[0,:] = [3,4,5]
    >>> a
    array([[3, 4, 5],
           [1, 1, 1]])
    

    基础python中也有切片赋值,只使用一维(a[:] = [1,2,3])

    【讨论】:

    • 好的,谢谢,确实有帮助,我确实有一个 for 循环,上面写着:for i, degree in enumerate([1,3,6,9])。所以我明白了 2D 切片的用途。
    • 虽然我也意识到我可以在没有逗号的情况下得到相同的答案 (ans[i:])。
    • a[0,:]a[0:] 不同。第二个复制所有行中的向量。
    【解决方案3】:

    我猜你也在使用numpy 来操作数据(作为矩阵)?

    如果基于numpyans[i,:] 表示选择ansith“行”及其所有“列”。 注意,在处理 numpy 数组时,我们应该(几乎)总是使用 [i, j] 而不是 [i][j]。如果您之前使用 Python 或 Java 来操作矩阵,这可能会违反直觉。

    【讨论】:

      猜你喜欢
      • 2015-09-18
      • 1970-01-01
      • 1970-01-01
      • 2021-07-12
      • 2020-06-28
      • 1970-01-01
      • 1970-01-01
      • 2014-01-12
      • 2015-10-08
      相关资源
      最近更新 更多