julia - 如何在 Julia 中广播集合数组的集合操作?
问题描述
我正在尝试在给定集合y
和某些集合数组中的所有项目之间执行集合操作X
,如下所示:
X=Array{Set}([Set([1,2,1]), Set([4,6,8 ]), Set([4,5])])
y=Set{Int16}([2,8,4])
z=broadcast(intersect, y, X)
println(z)
对于我的示例,这给了我空集,而不是带有单例的集y
。
解决方案
您必须防止y
被迭代。通常你会得到一个错误,但不幸的y
是有三个元素以及 vector X
。让我们创建一个更大的向量然后看看问题:
julia> X=Array{Set}([Set([1,2,1]), Set([4,6,8 ]), Set([4,5]), Set([7])])
4-element Array{Set,1}:
Set([2, 1])
Set([4, 8, 6])
Set([4, 5])
Set([7])
julia> y=Set{Int16}([2,8,4])
Set{Int16} with 3 elements:
4
2
8
julia> z=broadcast(intersect, y, X)
ERROR: DimensionMismatch("arrays could not be broadcast to a common size; got a dimension with lengths 3 and 4")
如何解决它 - 包装y
在一个 0 维容器中,Ref(y)
如下所示:
julia> z=broadcast(intersect, Ref(y), X)
4-element Array{Set{Int16},1}:
Set([2])
Set([4, 8])
Set([4])
Set()
或者等效地写:
julia> z=intersect.(Ref(y), X)
4-element Array{Set{Int16},1}:
Set([2])
Set([4, 8])
Set([4])
Set()
推荐阅读
- javascript - 如何将cloudinary图像同步转换为base64 img?
- css - CSS翻转卡-如何使正面小于背面
- javascript - 检查列表的所有项目是否都是整数字符串
- ruby-on-rails - 如何从目录外执行 docker compose?
- maps - 使用 Mapbox 进行地理编码
- html - CSS在悬停时放大网格图像,但将其周围的所有其他图像移开
- javascript - 使用反应、样式化组件等重新创建具有 n 行和列的动态 css 网格/flexbox 图像库
- java - Gradle:我可以使用 flatDir 存储库来包含源代码和/或 javadocs 吗?
- java - 为什么将一个子数组中的项目设置为另一个“超级数组”会更改子数组中的值(Mergesort)
- r - DPLYR:将多列从字符转换为整数