因此,我已经完成了该作业的一部分。作业中只有一部分对我没有任何意义。
我正在做一个LinearRegression模型,并且根据其他模型,我需要在最后使用ans[i,:] = y_poly
,但是我从来没有得到为什么的答案。
有人可以向我解释[i,:]
是什么意思吗?我还没有在网上找到任何解释。
答案 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]