You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Julia中如何使用broadcast实现字符串列表两两比较并返回二维数组?

在Julia中用broadcast生成字符串对比较的二维数组

你遇到的问题是因为直接对两个同维度的一维数组使用broadcast(==)时,Julia会执行逐元素对应比较,也就是只比较每个位置上的元素(str_list[i] == str_list[i]),所以返回的是和原数组长度一致的向量。

要让broadcast输出二维数组,只需要让其中一个数组变成列向量(或者行向量,只要维度匹配触发二维广播即可),这样两个数组的维度会被扩展成二维,从而生成所有元素对的比较结果。下面是几种实现方式:

方法1:转置其中一个数组

利用转置操作把其中一个一维数组变成列向量,再用broadcast(或简化的点语法):

str_list = ["apple", "banana", "cherry"]
# 用broadcast函数
equal_strs = broadcast(==, str_list, str_list')
# 或者用点语法(更简洁的broadcast写法)
equal_strs = str_list .== str_list'

方法2:reshape成列向量

用reshape把其中一个数组转换成N×1的列向量:

equal_strs = broadcast(==, str_list, reshape(str_list, :, 1))
# 点语法版本
equal_strs = str_list .== reshape(str_list, :, 1)

方法3:添加单元素维度

通过[:, nothing]给数组添加一个长度为1的维度,生成列向量:

equal_strs = broadcast(==, str_list, str_list[:, nothing])
# 点语法版本
equal_strs = str_list .== str_list[:, nothing]

以上三种方法生成的结果,和你用列表推导式[(x == y) for x in str_list, y in str_list]得到的二维布尔数组完全一致,每个位置(i,j)对应str_list[i] == str_list[j]的结果。

内容的提问来源于stack exchange,提问作者Jingyang Wang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 08:12:27