是否有一种简单快捷的方法将矩阵的一列与向量的元素相乘。我们可以明确地做到这一点,
DropdownButton(
underline: SizedBox(),
icon: Icon(
Icons.language,
color: Colors.white,
),
items: Language.getLanguages().map((Language lang) {
return new DropdownMenuItem<String>(
value: lang.languageCode,
child: new Text(lang.name),
);
}).toList(),
onChanged: (val) {
print(val);
},
)
有没有一种方法可以在一行中执行do循环。例如,在Numpy python中,我们可以一次完成这项工作
program test
integer :: x(3,3), y(3), z(3,3)
x = reshape([(i,i=1,9)],[3,3])
y = [1,2,3]
do i=1,3
z(:,i) = x(:,i) * y(i)
print *, z(:,i)
enddo
end program test
答案 0 :(得分:2)
尝试
z = x * spread(y,1,3)
,如果这不起作用(此计算机上没有Fortran,因此我没有检查过),则摆弄spread
直到它起作用为止。实际上,您可能希望将3
替换为size(x,1)
之类。
我希望这会导致编译器创建临时数组。而且,我希望能够轻松找到问题表现不及显式循环方案的情况。 “纯净的”单线通常在时间和空间上都有成本。经常使用的经过验证的Fortran显式循环方法是一种。
答案 1 :(得分:2)
为什么用垃圾替换清晰易读的代码?
program test
implicit none
integer i,j
integer :: x(3,3), y(3), z(3,3)
x = reshape([(i,i=1,9)],[3,3])
y = [1,2,3]
z = reshape ([((x(j,i)*y(i) ,j=1,3),i=1,3)], [3,3])
print *, z(1,:)
print *, z(2,:)
print *, z(3,:)
end program test