[i ,:]在Python中是什么意思?

时间:2019-01-31 21:52:56

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

因此,我已经完成了该作业的一部分。作业中只有一部分对我没有任何意义。

我正在做一个LinearRegression模型,并且根据其他模型,我需要在最后使用ans[i,:] = y_poly,但是我从来没有得到为什么的答案。

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

3 个答案:

答案 0 :(得分:6)

它特定于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]

答案 1 :(得分:3)

我想您也在使用numpy来操纵数据(作为矩阵)吗?

如果基于numpy,则ans[i,:]意味着选择ith的{​​{1}}'行'及其所有“列”。 请注意,在处理numpy数组时,我们(几乎)应始终使用ans而不是[i, j]。如果您以前使用Python或Java来操纵矩阵,则可能会违反直觉。

答案 2 :(得分:2)

在这种情况下,我认为[]表示可以通过定义 getitem 方法

使用的类对象的索引运算符
class A:
    def __getitem__(self, key):
        pass

键实际上可以是任何东西。在您的情况下,“ [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]