在Scala中将整个文件读入内存的简单和规范方法是什么?(理想情况下,控制字符编码.)
我能想到的最好的是:
scala.io.Source.fromPath("file.txt").getLines.reduceLeft(_+_)
Run Code Online (Sandbox Code Playgroud)
或者我应该使用Java的一个令人难以置信的习语,其中最好的(不使用外部库)似乎是:
import java.util.Scanner
import java.io.File
new Scanner(new File("file.txt")).useDelimiter("\\Z").next()
Run Code Online (Sandbox Code Playgroud)
从阅读邮件列表讨论来看,我不清楚scala.io.Source甚至应该是规范的I/O库.我完全不明白它的目的是什么.
...我想要一些简单易记的东西.例如,在这些语言中,很难忘记这些成语......
Ruby open("file.txt").read
Ruby File.read("file.txt")
Python open("file.txt").read()
Run Code Online (Sandbox Code Playgroud) 对于R,至少有两个稀疏矩阵包.我正在调查这些因为我正在使用太大而稀疏的数据集以适应具有密集表示的内存.我想要基本的线性代数例程,以及轻松编写C代码来操作它们的能力.哪个库最成熟,最好用?
到目前为止我发现了
有人有这方面的经验吗?
通过在RSeek.org上搜索一下,Matrix包似乎是最常提到的一个.我经常认为CRAN任务视图是相当权威的,而多变量任务视图提到了Matrix和SparseM.
我想拥有一个带有NumPy成员的Cython"cdef"对象,并且能够使用快速缓冲区访问.理想情况下,我会做类似的事情:
import numpy as np
cimport numpy as np
cdef class Model:
cdef np.ndarray[np.int_t, ndim=1] A
def sum(self):
cdef int i, s=0, N=len(self.A)
for 0 <= i < N:
s += self.A[i]
return s
def __init__(self):
self.A = np.arange(1000)
Run Code Online (Sandbox Code Playgroud)
不幸的是,Cython无法编译这个错误Buffer types only allowed as function local variables
.
我正在使用的解决方法是在分配给对象成员的新局部变量上声明缓冲区属性:
cdef class Model:
cdef np.ndarray A
def sum(self):
cdef int i, s=0, N=len(self.A)
cdef np.ndarray[np.int_t, ndim=1] A = self.A
for 0 <= i < N:
s += A[i]
return s …
Run Code Online (Sandbox Code Playgroud)