j - 将 csv 文件导入 J 并将它们用作变量

标签 j

我像这样将这些数据(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 文件。”换句话说,readcsvwritecsv 对称操作。值的形状似乎证实了这一点:

   $ 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/

相关文章:

j - 如何正确使用(0 : 0) in verbs

python - 多维数据上的 numpy apply_along_axis 计算

j - @ (atop) 的 LHS 似乎适用于整个列表,就像 @ : (at) NB. +/@(*:@:mdev) 所做的那样

j - 强制数组而不是J中的矩阵“i”。

j - 终端、编辑器、项目

j - 用 J 中的每次替换修改多个索引

j - 在列表上组合加法和除法动词

j - 需要帮助解析 "i.~"的含义

optimization - J:关于将过滤器序列最佳应用到列表

j - 在 J 中创建 y 形随机 float 组