随机改变数字

时间:2018-03-26 13:04:06

标签: python random

使用Python,我希望通过在数千个数字中为少数(简称500)随机选择的数字添加+1或-1来改变列表中的数字。

我熟悉随机数生成器,但不确定我下一步要改变当前数字是什么。

例如,这些是我想编辑的一些数字:

array([-0.5887, -0.3948,  2.7303, -0.4915, -0.2842,  2.7168, -0.6298,
       -0.2313,  2.5747, -0.5887, -0.3948,  2.7303, -0.6298, -0.2313,
        2.5747, -0.7114, -0.4042,  2.6477, -0.4915, -0.2842,  2.7168,
       -0.3596, -0.1205,  2.6922, -0.5133, -0.04  ,  2.5177, -0.4915,
       -0.2842,  2.7168, -0.5133, -0.04  ,  2.5177, -0.6298, -0.2313,
        2.5747, -0.3596, -0.1205,  2.6922, -0.2133,  0.0692,  2.6638,
       -0.3754,  0.1682,  2.469 , -0.3596, -0.1205,  2.6922, -0.3754,
        0.1682,  2.469 , -0.5133, -0.04  ,  2.5177, -0.2133,  0.0692,
        2.6638, -0.0574,  0.2702,  2.6393, -0.219 ,  0.3798,  2.4369,
       -0.2133,  0.0692,  2.6638, -0.219 ,  0.3798,  2.4369, -0.3754,
        0.1682,  2.469 ])

2 个答案:

答案 0 :(得分:1)

这是通过numpy库的一种直接方式。这假设您的数字列表存储在变量lst中。我建议你浏览每一行,以确保你了解正在发生的事情。

SO和其他地方有大量资源可以帮助您完成旅程。

import pandas as pd, numpy as np
import random

# convert data to numpy array
arr = np.array(lst)

# copy to test you are successful in final step
arr2 = arr.copy()

# get 20 random indices
to_change = random.sample(range(len(arr)), 20)

# increment those indices
arr[to_change] += 1

# check success
(arr != arr2).sum()  # 20

答案 1 :(得分:0)

在Python中你可以这样做:

x

即使set()有300,000个条目并且您正在更改5000个条目,代码也能快速运行。使用in是获得良好性能的关键,因为这使得使用const dogs = [{"breed":"Labrador","puppies":["Fluffy","Doggo","Floof"]},{"breed":"Rottweiler","puppies":["Biscuits","Mary"]}]; function collectPuppies(dogs) { const solution = []; for (let i = 0; i < dogs.length; i++) { solution.push(...dogs[i].puppies); } return solution; } console.log(collectPuppies(dogs));的速度非常快。