根据条件特别更改numpy数组中的所有元素,而无需在每个元素上迭代
嗨,我想根据第二个布尔数组(test_map)同时更改此数组(测试)中的所有值,而无需在每个项目上迭代。
test = np.array([1,1,1,1,1,1,1,1])
test_map = np.array([True,False,False,False,False,False,False,True])
test[test_map] = random.randint(0,1)
输出:
array([0, 1, 1, 1, 1, 1, 1, 0]) or array([1, 1, 1, 1, 1, 1, 1, 1])
问题在于,我希望将应更改的值(在这种情况下为第一个和最后一个值)随机更改为0或1。因此,4个可能的输出应为:
array([0, 1, 1, 1, 1, 1, 1, 0]) or array([1, 1, 1, 1, 1, 1, 1, 1]) or array([1, 1, 1, 1, 1, 1, 1, 0]) or array([0, 1, 1, 1, 1, 1, 1, 1])
Hi I would like to change all the values in this array (test) simultaneously based on a second boolean array (test_map) without iterating over each item.
test = np.array([1,1,1,1,1,1,1,1])
test_map = np.array([True,False,False,False,False,False,False,True])
test[test_map] = random.randint(0,1)
output:
array([0, 1, 1, 1, 1, 1, 1, 0]) or array([1, 1, 1, 1, 1, 1, 1, 1])
The problem with this is that I want the values that should be changed (in this case the first and last value) to each randomly be changed to a 0 or 1. So the 4 possible outputs should be:
array([0, 1, 1, 1, 1, 1, 1, 0]) or array([1, 1, 1, 1, 1, 1, 1, 1]) or array([1, 1, 1, 1, 1, 1, 1, 0]) or array([0, 1, 1, 1, 1, 1, 1, 1])
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
一种可能的解决方案是用
np.random.randint
:生成一个随机数组的“位”数组:One possible solution is to generate a random array of "bits", with
np.random.randint
:您可以通过传递
true
值的数量test_map
作为size> size
参数到np,可以生成所需的随机整数。 .random.randint()
:You can generate just as many random integers as you need by passing the number of
True
values intest_map
as thesize
argument tonp.random.randint()
: