将julia数组重置为全零的最快方法是什么?

Flo*_*ald 7 memory arrays julia

假设我有一个现有的数组

x = rand(4)
Run Code Online (Sandbox Code Playgroud)

然后我想重置x为零.我能避免这样做吗x = zeros(4)?我对内存分配感到不满.

Chr*_*kas 9

在一行中完成它的最佳方法是:

x[:] = zero(y)
Run Code Online (Sandbox Code Playgroud)

要么

fill!(x,zero(y))
Run Code Online (Sandbox Code Playgroud)

y你希望它的类型在哪里.这种方式很好的原因是它适用于所有情况.如果x是任何类型,只要y匹配类型(实际上,你可以使用y=x[1]),使用它将起作用.

当我的意思是任何类型时,我的意思是这也适用于奇数类型,如SIUnits.如果使用此命令,程序包可以支持SIUnit而无需导入程序包,因为这会将正确的单位应用于x值(只要其所有操作的单位都是正确的),而fill!(x, 0.0)由于错误的单位会导致错误(你也可以使用fill!(x,zeros(y)).否则你必须检查单位和各种各样的东西.