rand() 的 Matlab 到 Python 转换

Spi*_*ica 3 python random matlab code-conversion

在Matlab中我有以下内容:

duration = 20
n=5
times = rand(1,n)*duration;
Run Code Online (Sandbox Code Playgroud)

变量“times”给出一个 1×n 矩阵,其中填充 0 到 1 之间的随机数,然后乘以 20。这将得到一组 0 到 20 之间的 5 个数字。

现在我想在 Python 中实现相同的目标,那么等效的是什么?我尝试了以下方法:

times = random.uniform(1,durations,n)  %% or times = random.uniform(1,20,5)
Run Code Online (Sandbox Code Playgroud)

但我收到这个错误:

类型错误:uniform() 恰好需要 3 个参数(给定 4 个)

这对我来说没有意义,因为我似乎只给了它 3 个参数。

Sue*_*ver 6

random.uniform只接受随机数的上限和下限。您将需要调用random.uniform ntimes 来创建随机值列表。

values = [random.uniform(0, 20) for _ in range(5)]
Run Code Online (Sandbox Code Playgroud)

或者,您可以使用numpy.random.rand与 MATLAB 类似的方法执行此操作,该函数将返回一个 numpy 数组。

import numpy as np
values = np.random.rand(1, 5) * 20
Run Code Online (Sandbox Code Playgroud)

如果您要将大量代码从 MATLAB 转换为 Python,numpy建议您使用标准数据类型,因为它的计算速度快且行为与 MATLAB 类似。