当前位置: 首页 > 知识库问答 >
问题:

Julia-数学运算符和数组{Union{Float64,Missing}

相弘和
2023-03-14

在将一些代码从v0.6.4转换为v1.0.1时,我注意到在v0.6.4中具有Array{Union{Float64, Missing}}的基本数学运算符的奇怪行为。我想找到一个适用于v0.6.4的解决方案,这样我就可以将代码的输出与其当前的工作版本进行比较。

假设我有,

using Missings;
A = Array{Union{Float64, Missing}}([2.0 1.0 missing]);
B = [2.0 1.0 0.5];

v0.6.4中,总和A B和元素级总和A. B给出一个输出矩阵,它是Array{any,2}。我期待一个Array{Union{Float64, Missing},2},因为总和的第一个参数具有这种类型。这同样适用于其他基本的数学运算。

我为A B找到了一个难看的变通方法,但对于元素明智的总和A. B却没有。为了获得两个操作的正确类型(以及类似的-例如,A.-B),您建议做什么?

共有1个答案

姚正真
2023-03-14

我找到了一个(相对)简单的解决方案来处理A. B。我为总和运算符定义了一个即席广播方法,该方法将Base的输出转换为。Broadcast.broadcast_c转换为Array{Union{T, Missing}}

import Base: +, broadcast, Broadcast.broadcast_c, Broadcast.containertype;


broadcast(+, A::Array{Union{T, Missing}}, B::Array{T}) where {T<:Number} =
        broadcast_c(+, containertype(A, B), A, B) |> Array{Union{T, Missing}};

broadcast(+, A::Array{T}, B::Array{Union{T, Missing}}) where {T<:Number} =
    broadcast_c(+, containertype(A, B), A, B) |> Array{Union{T, Missing}};

broadcast(+, A::Array{Union{T, Missing}}, B::Array{Union{T, Missing}}) where {T<:Number} =
    broadcast_c(+, containertype(A, B), A, B) |> Array{Union{T, Missing}};

如前所述,这对于Julia0.7来说不是问题,但是对于0.6.4来说是问题。

 类似资料:
  • 主要内容:RxJava 数学运算符 介绍,RxJava 数学运算符 示例RxJava 数学运算符 介绍 以下是 Observable 的数学运算符。 运算符 描述 Average 评估所有项目的平均值并发出结果。 Concat 不交错地从多个 Observable 发出所有项目。 Count 计算所有项目并发出结果。 Max 评估所有项目的最大值项目并发出结果。 Min 评估所有项目的最小值项目并发出结果。 Reduce 对每个项目应用一个函数并返回结果。 Sum 评

  • 在MariaDB数据库中,运算符用于组合两个或更多语句的结果集。它删除各种语句之间的重复行。 语法 注意:运算符中的每个语句在具有相似数据类型的结果集中必须具有相同数量的字段。 1. 使用UNION操作符返回单个字段 下面来看一个从多个语句返回一个字段的运算符的例子。(两个表具有相同的公共字段)。 假设有两张表:和。对应的表结构和数据如下 - 表中的数据: 表中的数据: 经过上创建和插入数据,现在

  • 主要内容:Oracle UNION运算符简介,Oracle UNION示例,Oracle UNION 与 JOIN 区别在本教程中,您将学习如何使用Oracle 运算符来组合由两个或多个查询返回的结果集。 Oracle UNION运算符简介 运算符是一个集合运算符,它将两个或多个SELECT语句的结果集组合到一个结果集中。 以下说明了组合两个查询的结果集的运算符的语法: 在此声明中,和必须具有相同顺序的相同列数。 另外,对应列的数据类型必须是相同的数据类型组,例如数字或字符。 Oracle UN

  • 本文向大家介绍Ruby数组和splat(*)运算符,包括了Ruby数组和splat(*)运算符的使用技巧和注意事项,需要的朋友参考一下 示例 的*操作者可用于解压缩变量和数组,使得它们可以作为一个独立的参数的方法进行传递。 如果尚未将单个对象包装在Array中,则可以使用它: 在上面的示例中,该wrap_in_array方法接受一个参数value。 如果value为Array,则将其元素解压缩,并

  • 我们从学校里了解到过很多运算符,比如说加号 +、乘号 *、减号 - 等。 在本章中,我们将从简单的运算符开始,然后着重介绍 JavaScript 特有的方面,这些是在学校中学习的数学所没有涵盖的。 术语:“一元运算符”,“二元运算符”,“运算元” 在正式开始前,我们先简单浏览一下常用术语。 运算元 —— 运算符应用的对象。比如说乘法运算 5 * 2,有两个运算元:左运算元 5 和右运算元 2。有时

  • MariaDB 操作符与操作符相同,但不会删除重复的记录。它返回查询中的所有行,并且不删除各种语句之间的重复行。 语法 注意:运算符中的每个语句在具有相似数据类型的结果集中必须具有相同数量的字段。 1. 使用UNION ALL操作符返回单个字段 下面来看一个从多个语句返回一个字段的运算符的例子。(两个表具有相同的公共字段)。 假设有两张表:和。对应的表结构和数据如下 - 表中的数据: 表中的数据: