writed一个Bool矩阵作为0,1矩阵

bec*_*cko 3 julia

Bool例如,我有一个值矩阵

x = bitrand(2,3)
Run Code Online (Sandbox Code Playgroud)

如果我尝试将其保存到文件中:

writedlm("mat.txt", x)
Run Code Online (Sandbox Code Playgroud)

我得到一个true和的矩阵false.我想得到一个矩阵的01(其中0代替false,1代替true).有没有一种简单的方法可以通过一些选项来完成这项工作writedlm,而无需自己逐行编写文件?

Fel*_*ema 5

writedlm("mat.txt", map(Int8,x))
Run Code Online (Sandbox Code Playgroud)

获取每个元素x并使用Int8函数/构造函数将其转换为整数.

您也可以使用其他整数类型,但Int8比例如内存效率更高Int64.

  • IO(输入/输出)可能比地图慢得多.您可以使用Julia中的内置分析器对其进行测试. (3认同)
  • 您也可以使用`Int8`来实现相同的功能,但内存效率更高.尝试使用800x800矩阵,`Int64`使用4.8MB,而Int8`仅使用0.6MB. (2认同)