Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Julia 如何显示元组{Float64,Bool}_Julia - Fatal编程技术网

Julia 如何显示元组{Float64,Bool}

Julia 如何显示元组{Float64,Bool},julia,Julia,我希望元组的布尔部分在作为矩阵的一部分时显示为这样(而不是整数或浮点)。 代码如下: a = [(1., true) (1.5 , true) ; (1.5 , false) (-5.5 , false) ] 2×2 Matrix{Tuple{Float64, Bool}}: (1.0, 1) (1.5, 1) (1.5, 0) (-5.5, 0) 然而,我希望得到以下结果: 2×2 Matrix{Tuple{Float64, Bool}}: (1.0, true) (1.5, t

我希望元组的布尔部分在作为矩阵的一部分时显示为这样(而不是整数或浮点)。 代码如下:

a = [(1., true) (1.5 , true) ; (1.5 , false) (-5.5 , false) ]
2×2 Matrix{Tuple{Float64, Bool}}:
 (1.0, 1)  (1.5, 1)
 (1.5, 0)  (-5.5, 0)
然而,我希望得到以下结果:

2×2 Matrix{Tuple{Float64, Bool}}:
 (1.0, true)  (1.5, true)
 (1.5, false)  (-5.5, false)
我想我在朱莉娅的类型中遗漏了一些东西;感谢您的帮助

我偶然意识到:

b = [(1., true) (1.5 , true) ; (false, 1.5) (false, -5.5) ]
2×2 Matrix{Tuple{Real, Real}}:
 (1.0, true)   (1.5, true)
 (false, 1.5)  (false, -5.5)
显示布尔值,如我所期望的(第一种情况)。当元组的类型为
Tuple{Real,Real}
时,也会意外地显示布尔值。我再一次感到我错过了什么;欢迎任何指向文档特定部分的指针。
我使用的是Julia 1.6.1。

默认情况下,Julia以0和1等数组显示布尔类型的值,使显示更加紧凑。这样做是为了与位数组兼容(它将布尔值保存在一位中)。e、 g:

因为我们知道数组元素的类型是Bool,所以我们知道
1
true
,而
0
false

但是,如果从类型中可以明显看出这些值是布尔值,则使用
0
1
。对于第一种情况,是浮点和布尔的元组,
1
表示
true
,而
0
表示
false

从值创建数组时,Julia对所有值使用公共类型,即
Real
。但对于第二种情况,这并不清楚:1是真的,或者1是整数。这就是为什么Julia在第二种情况下显示
true
false

如果要使用只能包含
Bool
Float64
的类型,可以使用Union{Float64,Bool}显式执行

因此,如果要显示
true
false
,可以显式设置联合类型:

julia> a = Tuple{Union{Float64, Bool}, Union{Float64, Bool}}[(1., true) (1.5 , true) ; (1.5 , false) (-5.5 , false) ]
2×2 Matrix{Tuple{Union{Bool, Float64}, Union{Bool, Float64}}}:
 (1.0, true)   (1.5, true)
 (1.5, false)  (-5.5, false)

更新:此示例仅用于解释。如果元组中的第二个元素假定只包含
Bool
值,则将其类型更改为
Union{Float64,Bool}
可能会显著影响性能。

这会更改
a
中的数据类型是,但恐怕没有其他方法(除了重载默认显示方法,这是一种“盗版”)很有趣,谢谢你的解释。你通过查看display方法找到答案了吗?我找不到解释这一点的文档,但我记得旧版本的Julia工作方式不同。它以前将[true,false]打印为[true,false],但不打印为[1,0]。如果你需要很好的表格打印能力,你可以看看像或这样的软件包
julia> a = Tuple{Union{Float64, Bool}, Union{Float64, Bool}}[(1., true) (1.5 , true) ; (1.5 , false) (-5.5 , false) ]
2×2 Matrix{Tuple{Union{Bool, Float64}, Union{Bool, Float64}}}:
 (1.0, true)   (1.5, true)
 (1.5, false)  (-5.5, false)