为单个 SFrame 元素赋值

Assign a value to a single SFrame element

我想为 SFrame 中的单个元素(即单行和单列)赋值。 我正在使用 Python Notebook 并导入 graphlab。

我创建了一个尺寸为 16364 行 x 37 列的 SFrame。 'test' 列包含零。

我使用了以下语法来设置值: sf[1]['test'] = 3;

如果我接着输入: sf[1]['test']

then I see the correct value, i.e "3"

但是如果我输入: 旧金山

then I just see values of zero for all rows of column 'test'

sf.head() 或 sf['test'] 或 sf['test'].head()

也相同

我不明白为什么一种语法显示值“3”而另一种语法却没有。 sf[1]['test']中的值是3还是0?

SFrames 是不可变的,因此它们实际上不支持项目分配。您在此处看到差异的原因是

sf[1]['test']

实际上根本不是指 SFrame。 "sf[1]" returns 一个字典,其键与 SFrame 的列名匹配,值与 SFrame 的第二行匹配。当您将数字分配给 "sf[1]['test']" 时,您正在更改 returned 字典中 "test" 键的值,因此 SFrame "sf" 不涉及任务。仅引用列 "test" 的第二个值并分配值“3”的正确方法是:

sf['test'][1] = 3

这会 return 这个错误:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-5-c52dab41d5dd> in <module>()
----> 1 sf['test'][1] = 3

TypeError: 'SArray' object does not support item assignment