gpt4 book ai didi

math - 我正在尝试用 J 中的文件做一些基本的数学运算

转载 作者:行者123 更新时间:2023-12-01 00:35:28 28 4
gpt4 key购买 nike

我有一个由空格分隔的数字文件(不是 csv 文件,而是纯文本文件)下面的代码将对出现在连续行中的数字求和。

+/ 0". 1!:1 < F

(0". 用于将字符串转换为数字)(F 为文本文件)

但是如果每个数字都出现在它自己的行上,这是行不通的。我该如何修改代码来做到这一点?以及一些针对文件的 J 特定数值分析的通用指针。

最佳答案

要处理的第一个问题是行尾。使用标准库中的 freads 将读取您的文本文件并确保每一行都以 LF 终止,无论这些行最初是 CRLF、CR 还是只是 LF 终止。如果您想完全按照文件中的原样读取字节,请使用不带左参数的 fread

让我们使用以下以空格分隔的文件 (numbers.txt) 作为示例:

1 -3.93 17 -7 564
2 4.27 12 3 234
3 -1.90 22 5 728
4 0.00 10 -4 442

您可以按如下方式读取文件:

   0 ". 'm' freads 'numbers.txt'
1 _3.93 17 _7 564
2 4.27 12 3 234
3 _1.9 22 5 728
4 0 10 _4 442

在幕后,'m'freads 左参数是这样做的:

   0 ". ];._2 freads 'numbers.txt'

;._2 表示使用文件中的最后一个字节(现在是 LF)作为分隔符,将它们从结果中移除并将动词应用于它的左边(在本例中为 ])到每一行。结果是一个字符数组,每行一行,列对应文件中最长的行(较短的行用空格填充)。 0 ". 然后尝试将数组解析为数字,如果不能,它将用 0 替换输入(我经常使用 _999 所以更明显的是有些东西没有正确转换)。

如果文件由空格以外的其他内容分隔,那么您需要解析这些字段,否则您会得到有趣的结果:

   0 ". ];._2 freads 'numbers.csv'
0 24.2712 0 0

如果它是一个简单的文件,您可以尝试以下之一:

   0 ". ];._2 ', ' charsub freads 'numbers.csv'  NB. replace delimiter with spaces
1 _3.93 17 _7 564
2 4.27 12 3 234
3 _1.9 22 5 728
4 0 10 _4 442

0 ". > ','&cut;._2 freads 'numbers.csv' NB. box fields in each line
1 _3.93 17 _7 564
2 4.27 12 3 234
3 _1.9 22 5 728
4 0 10 _4 442

如果它更复杂(带引号的定界符等)或者您只是觉得它更简单,您可以使用 tables/csvtables/dsv插件:

   load 'tables/csv'
0 ". > readcsv 'numbers.csv'
1 _3.93 17 _7 564
2 4.27 12 3 234
3 _1.9 22 5 728
4 0 10 _4 442

0 ". > ',' readdsv 'numbers.csv'
1 _3.93 17 _7 564
2 4.27 12 3 234
3 _1.9 22 5 728
4 0 10 _4 442

关于math - 我正在尝试用 J 中的文件做一些基本的数学运算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60680293/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com