在Julia中使用Broadcasting按索引计算二维数组对应值的方法
Julia 广播实现二维数组第一列赋值方案
你可以直接构造行号序列后和标量做广播运算,再赋值给数组第一列即可,不需要逐行循环:
实现代码
首先假设你的二维数组a的维度为m行n列,全0初始化代码示例如下:
# 先定义固定标量和初始化数组 l = 5 k = 2 m = 10 # 数组行数 n = 3 # 数组列数 a = zeros(m, n) # 广播赋值第一列,1:m 就是所有行号i的序列,和标量运算时自动广播为等长向量 a[:, 1] .= (l .* (1:m)) ./ k
代码说明
1:m生成的是从1到m的整数序列,刚好对应所有行的行号i- 所有运算都用带点的广播运算符
.*、./、.=,全程不会产生额外的中间临时数组,运算效率和手写循环一致 - 赋值时用
.=而不是=,可以直接把计算结果写入a的第一列内存,不需要重新分配数组空间
如果要直接生成带目标第一列的新数组,也可以用广播一步完成:
a = hcat((l .* (1:m)) ./ k, zeros(m, n-1))
内容的提问来源于stack exchange,提问作者user16570427
相关产品推荐
相关产品推荐

