gpt4 book ai didi

Python:如何生成在随机位置具有非零条目的向量?

转载 作者:太空狗 更新时间:2023-10-30 02:10:50 24 4
gpt4 key购买 nike

我想使用 Numpy 生成一个向量,它是 k-稀疏的,即它有 n 个条目,其中 k 是非零的。非零条目的位置是随机选择的,条目本身是从具有零均值和单位方差的高斯分布中选择的。测试向量很小(256 个条目),所以我认为这里不需要 Scipy 的稀疏矩阵接口(interface)。

我目前的方法是生成一个随机列表,其中包含 k 个介于 0 和 256 之间的整数,初始化一个全为零的向量,然后使用 for 循环选择一个随机值并替换具有这些值的向量,如下所示:

# Construct data vector x
# Entries of x are ~N(0, 1) and are placed in the positions specified by the
# 'nonzeros' vector
x = np.zeros((256, 1))

# Get a random value ~N(0, 1) and place it in x at the position specified by
# 'nonzeros' vector
for i in range(k):
x[nonzeros[i]] = np.random.normal(mu, sigma)

这里的性能不是问题(它与研究相关)所以它有效,但它感觉 unpythonic,我怀疑有更优雅的解决方案。

最佳答案

这个怎么样:

In [41]: import numpy as np

In [42]: x = np.zeros(10)

In [43]: positions = np.random.choice(np.arange(10), 3, replace=False)

In [44]: x[positions] = np.random.normal(0,1,3)

In [45]: x
Out[45]:
array([ 0. , 0.11197222, 0. , 0.09540939, -0.04488175,
0. , 0. , 0. , 0. , 0. ])

关于Python:如何生成在随机位置具有非零条目的向量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26385482/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com