我像这样将这些数据(20 个向量 v)保存到 csv 文件中
v=:<"1 (? 20 2 $ 20)
makecsv v
v writecsv jpath'~temp/position.csv'
]vcsv =: freads jpath '~temp/position.csv'
fixcsv vcsv
,我可以通过
导入 csv 文件readcsv jpath '~temp/position.csv'
但是,如果我将它命名为
,它不会给出相同的结果w=: readcsv jpath '~temp/position.csv'
diff=: ([{]) ,. ]
0 diff v
0 diff w
实际上,0 diff w给出了一个长度错误
我是否应该使用任何其他方法从 v(原始)和 w(导入的 csv 数据)中获得相同的结果?
谢谢!
最佳答案
我是 J 的初学者,所以您稍后可能会得到更好的答案,但我想我发现了一些东西。
首先,tables/csv
插件文档声明 readcsv
“将 csv 文件读入一个盒装数组,”强调我的,同时 writecsv
“将数组写入 csv 文件。”换句话说,readcsv
和writecsv
是非 对称操作。值的形状似乎证实了这一点:
$ w
1 20
$ v
20
这也是为什么 diff
适用于 v
但不适用于 w
的原因。如果您只是将结果拆箱,效果似乎更好:
0 diff 0 { w
┌───┬─────┐
│1 3│1 3 │
├───┼─────┤
...
├───┼─────┤
│1 3│5 8 │
└───┴─────┘
但是,形状仍然不完全相同:
$ > v
20 2
$ > 0 { w
20 5
我认为这是因为 readcsv
不知道您的值是数字;你可能需要在某处扔一个 ".
来解码它们。
关于j - 将 csv 文件导入 J 并将它们用作变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47293908/