我想为SFrame中的单个元素(即单行和列)分配值。 我正在使用Python Notebook并导入graphlab。
我创建了一个尺寸为16364行x 37列的SFrame。 专栏'测试'包含零。
我使用以下语法设置值: sf [1] [' test'] = 3;
如果我输入: SF [1] ['测试']
然后我看到了正确的值,即" 3"
但如果我输入: sf
然后我只看到列的所有行的值为零' test'
同样适用于sf.head()或sf [' test']或sf [' test']。head()
我不明白为什么一个语法显示" 3"另一个没有的地方。 sf [1] [' test'] 3或0?
中的值是多少?答案 0 :(得分:4)
SFrame是不可变的,因此它们实际上不支持项目分配。你在这里看到差异的原因是因为
sf[1]['test']
实际上并不是指SFrame。 “sf [1]”返回一个字典,其中包含与SFrame列名匹配的键,以及与SFrame第二行匹配的值。当您为“sf [1] ['test']”分配一个数字时,您正在更改返回的字典中的“test”键的值,因此SFrame“sf”不参与分配。仅引用“test”列的第二个值并赋值“3”的正确方法是:
sf['test'][1] = 3
将返回此错误:
---------------------------------------------------------------------------
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