use*_*736 5 python arrays numpy
我有一个名为arr的巨大的np.array,带有N个值,并随机选择这些值的10%:
choice=random.sample(range(N), int(N*percent)) # percent has values 0-1
newarr=arr[choice]
Run Code Online (Sandbox Code Playgroud)
N可能超过200万个值.
实际上我还需要一个包含其他90%值的数组.所以目前我使用的是非常慢的以下内容:
def buildRevChoice(choice, nevents):
revChoice=[]
for i in range(N):
if not i in choice:
revChoice.append(i)
return revChoice
Run Code Online (Sandbox Code Playgroud)
你能想出一种方法来解决这个问题吗?
您可以只random.shuffle列出该列表,然后根据需要进行拆分.
def choice(N, percent):
tmp = range(N)
random.shuffle(tmp)
cut = int(N * percent)
return tmp[:cut], tmp[cut:]
Run Code Online (Sandbox Code Playgroud)
你将获得两个列表,第一个包含所选列表,第二个包含其余列表.
| 归档时间: |
|
| 查看次数: |
270 次 |
| 最近记录: |