python - 如何将不同的随机值添加到 numpy 数组的 n 个元素?
问题描述
我正在尝试将随机值添加到 numpy 数组中的特定数量的值中,以改变我的神经网络的权重。例如,此数组中的 2 个值
[ [0 1 2]
[3 4 5]
[6 7 8] ]
应该是变异的(即添加一个介于 -1 和 1 之间的随机值)。结果可能看起来像这样:
[ [0 0.7 2]
[3 4 5]
[6.9 7 8]]
我更喜欢没有循环的解决方案,因为我的真正问题比 3x3 矩阵大一点,并且循环通常效率低下。
解决方案
这是一种基于np.random.choice
-
def add_random_n_places(a, n):
# Generate a float version
out = a.astype(float)
# Generate unique flattened indices along the size of a
idx = np.random.choice(a.size, n, replace=False)
# Assign into those places ramdom numbers in [-1,1)
out.flat[idx] += np.random.uniform(low=-1, high=1, size=n)
return out
样品运行 -
In [89]: a # input array
Out[89]:
array([[0, 1, 2],
[3, 4, 5],
[6, 7, 8]])
In [90]: add_random_n_places(a, 2)
Out[90]:
array([[0. , 1. , 2. ],
[2.51523009, 4. , 5. ],
[6. , 7. , 8.36619255]])
In [91]: add_random_n_places(a, 4)
Out[91]:
array([[0.67792859, 0.84012682, 2. ],
[3. , 3.71209157, 5. ],
[6. , 6.46088001, 8. ]])
推荐阅读
- flutter - Flutter:显示来自 API 提供商的 YouTube 视频
- assembly - 在 Arm 7 中浏览数组
- html - 我可以阻止浏览器在更改密码对话框中建议存储的密码吗?
- python - ZeroMQ 连接器如何检查订单是否已被 SL/TP 关闭?
- google-apps-script - Google 表格脚本 - 在同一个电子表格中将不同的数据从一张表格复制到另一张表格
- python - types.MappingProxyType 的类型提示
- laravel - 如何通过 laravel 8 中的数据透视表从另一个表中获取数据?
- c - `O_DIRECT | 有什么区别?O_SYNC` + write() 和 `O_DIRECT` + write() + fsync()
- python - 如何在替换 %s 时添加字符串
- angular - 将角度应用程序日志发送到弹性搜索