您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

python – 用另一个数组中的随机元素填充numpy数组

5b51 2022/1/14 8:22:10 python 字数 2895 阅读 519 来源 www.jb51.cc/python

我不确定这是否可行但是这里有.假设我有一个数组: array1 = [0,.1,.2,.3,.4,.5,.6,.7,.8,.9,1] 现在我想创建一个numpy 1D数组,由5个元素组成,这些元素是从array1中随机抽取的,条件是sum等于1.例如,类似于numpy数组,看起来像[.2,.2 ,0.2,0.1,0.1]. >目前我使用随机模块和选择函数,如下所示: range1 = np.arr

概述

array1 = [0,.1,.2,.3,.4,.5,.6,.7,.8,.9,1]

现在我想创建一个numpy 1D数组,由5个元素组成,这些元素是从array1中随机抽取的,条件是sum等于1.例如,类似于numpy数组,看起来像[.2,0.2,0.1,0.1].

>目前我使用随机模块和选择函数,如下所示:@H_404_7@range1 = np.array([choice(array1),choice(array1),choice(array1)])@H_404_7@然后检查range1以查看它是否符合标准;我想知道是否有更快的方式,类似的东西@H_404_7@randomArray = np.random.random()代替.@H_404_7@>如果我可以将这个数组存储在某个库中会更好,这样如果我尝试生成100个这样的数组,那就没有重复,但这不是必需的.

>>> import numpy as np
>>> array1 = np.array([0,1])
>>> np.random.choice(array1,5)
array([ 0.,0.,0.3,1.,0.3])
>>> np.random.choice(array1,5,replace=False)
array([ 0.6,0.8,0.4])

要获得总和等于1的5个元素,

>生成4个随机数.@H_404_7@>从1 – >中减去4个数字的总和. X@H_404_7@>如果x包含在array1中,则将其用作最终数字;或重复

>>> import numpy as np
>>> 
>>> def solve(arr,total,n):
...     while True:
...         xs = np.random.choice(arr,n-1)
...         remain = total - xs.sum()
...         if remain in arr:
...             return np.append(xs,remain)
... 
>>> array1 = np.array([0,1])
>>> print solve(array1,1,5)
[ 0.1  0.3  0.4  0.2  0. ]

一个版本(假设给定的数组已排序):

EPS = 0.0000001
def solve(arr,n):
    while True:
        xs = np.random.choice(arr,n-1)
        t = xs.sum()
        i = arr.searchsorted(total - t)
        if abs(t + arr[i] - total) < EPS:
            return np.append(xs,arr[i])

总结

以上是编程之家为你收集整理的python – 用另一个数组中的随机元素填充numpy数组全部内容,希望文章能够帮你解决python – 用另一个数组中的随机元素填充numpy数组所遇到的程序开发问题。


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶