假设我有以下两个带有均值和标准差的数组:
a = np.random.normal(mu, sigma)
In [1]: a
Out[1]: array([1715.6903716 , 3028.54168667, 4731.34048645, 933.18903575])
然后:
a = np.random.normal(mu, sigma, 100)
a = np.random.normal(mu, sigma, 100)
Traceback (most recent call last):
File "<ipython-input-417-4aadd7d15875>", line 1, in <module>
a = np.random.normal(mu, sigma, 100)
File "mtrand.pyx", line 1652, in mtrand.RandomState.normal
File "mtrand.pyx", line 265, in mtrand.cont2_array
ValueError: shape mismatch: objects cannot be broadcast to a single shape
但是,如果我要求mu的每个元素100次抽奖,西格玛:
s = (100, 100, 100, 100)
a = np.random.normal(mu, sigma, s)
我也尝试使用大小的元组:
@SpringView(name = RegisterView.VIEW_NAME)
@DesignRoot
public class RegisterView extends VerticalLayout implements View {
protected static final String VIEW_NAME = "register";
@PostConstruct
void init() {
setSizeFull();
setDefaultComponentAlignment(Alignment.MIDDLE_CENTER);
createUIComponents();
setSpacing(true);
}
private void createUIComponents() {
addComponent(new Label("HEADER"));
addComponent(createRegistrationForm());
addComponent(new Label("TEST"));
}
private FormLayout createRegistrationForm() {
final FormLayout layout = new FormLayout();
final TextField firstNameTextField = new TextField("firstName");
final TextField lastnameTextField = new TextField("lastname");
layout.addComponents(firstNameTextField, lastnameTextField);
return layout;
}
我缺少什么?
答案 0 :(得分:1)
当你传递mean和std的值的列表/向量时,我不相信你可以控制size参数。相反,您可以迭代每对,然后连接:
np.concatenate(
[np.random.normal(m, s, 100) for m, s in zip(mu, sigma)]
)
这会为您提供(400, )
数组。如果您想要(4, 100)
数组,请拨打np.array
而不是np.concatenate
。
答案 1 :(得分:1)
如果您只想进行一次通话,那么正态分布很容易在事后移位和重新缩放。 (我在这里以你的例子组成一个10000长的mu
和sigma
向量):
mu = np.random.choice([2000., 3000., 5000., 1000.], 10000)
sigma = np.random.choice([250., 152., 397., 180.], 10000)
a = np.random.normal(size=(10000, 100)) * sigma[:,None] + mu[:,None]
这很好用。您可以决定速度是否是一个问题。在我的系统上,以下速度只有50%:
a = np.array([np.random.normal(m, s, 100) for m,s in zip(mu, sigma)])