在numpy数组中查找X值并替换为随机值

袜子

考虑一个numpy数组的列表,其值在随机位置分配为-1或1。

a = np.array([1,-1,1,1,-1,1,-1,-1,1,-1])
b = np.array([-1,-1,1,-1,1,1,-1,1,-1,-1])

我需要对这些数组执行求和和逐点乘法运算。

例如,对2个数组求和后,我将得到一个新的数组,其值是-2,0和2。

c = a + b
c = [ 0 -2 2 0 0 2 -2 0 0 -2]

现在,我想将其“归一化”到-1和1。

对于2和-2很简单:

c[c < 0] = -1

c[c > 0] = 1

问题是0。对于他们,我想随机选择-1或1。

所需的输出如下所示:

c =  [ 1 -1 1 -1 -1 1 -1 1 -1 -1]

笼统地说,我的问题是如何在一个数组中找到所有等于x的N个值,然后用一个随机数代替。

我的问题是如何以最“ pythonic”的,最快的方式做到这一点?

谢谢

袜子

只需发布我到目前为止获得的答案的最终结果即可。如果将来有人有更好的解决方案,请分享!

我给我找到的3个解决方案计时,我做了一个。

def Norm1(HV):
    HV[HV > 0] = 1
    HV[HV < 0] = -1
    zind = np.where(HV == 0)[0]
    HV[zind] = np.array([np.random.choice([1, -1]) for _ in zind])
    return HV

def norm2(HV):
    if HV == 0: 
        return np.random.choice(np.array([-1,1])) 
    else: 
        return HV / HV * np.sign(HV)                                                                         

Norm2 = np.vectorize(norm2)

def Norm3(HV):
    HV[HV > 0] = 1
    HV[HV < 0] = -1
    mask = HV==0;
    HV[mask] = np.random.choice((-1,1),HV[mask].shape)
    return HV

def generate(size):
    return np.random.binomial(1, 0.5, size=size) * 2 - 1

def Norm4(arr):
    np.floor_divide(arr, 2, out=arr)
    positions = (arr == 0)
    size = sum(positions)
    np.add.at(arr, positions, generate(size)

时间是:

%%timeit
d = Norm1(c)
203 µs ± 5.9 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)

%%timeit
d = Norm2(c)
33.4 ms ± 1.03 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)

%%timeit
d = Norm3(c)
217 µs ± 11.5 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

%%timeit
d = Norm4(c)
21 ms ± 1.23 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)

这样看来,答案13是最好的答案它们之间的差异看起来很小,但是在尝试了更多次运行之后,数字1总是排在最前面

感谢您的帮助!我将在问题中添加一些对高清计算的引用,因为这是此应用程序的核心问题,因此如果需要的话,人们会更容易找到它。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

用numpy数组中的随机替换缺失值

来自分类Dev

在numpy数组中用随机替换缺失值

来自分类Dev

从随机维数组中查找值的索引

来自分类Dev

随机删除 numpy 数组中 30% 的值

来自分类Dev

将一维Numpy数组中的NaN值替换为先前的no-NaN值

来自分类Dev

遍历对象数组,并将值替换为数组中的值

来自分类Dev

在numpy nd数组中查找重复值

来自分类Dev

将NumPy数组中的中心像素值替换为同一数组中的最大值

来自分类Dev

大于x时替换数组中的值

来自分类Dev

如何通过Excel在同一行中随机查找和替换为两个多个值的比率?

来自分类Dev

numpy:将数组中的每个值替换为其相邻元素的均值

来自分类Dev

将最小值替换为numpy数组中的另一个

来自分类Dev

用随机值替换多维数组中的所有项目

来自分类Dev

查找NumPy数组等于值列表中任何值的位置

来自分类Dev

如何查找数组中特定字符串的随机值

来自分类Dev

numpy数组-替换某些值

来自分类Dev

替换数组中的值

来自分类Dev

替换数组中的值

来自分类Dev

在2d Numpy数组中查找值x,y,z的行

来自分类Dev

查找在numpy数组中不是X或Y的某个值首次出现的索引

来自分类Dev

查找(x,y)坐标的Numpy数组的最小值

来自分类Dev

如何在numpy数组中按行随机分配值

来自分类Dev

如何随机化 numpy 数组中的值?

来自分类Dev

在Swift字典数组中查找和替换值

来自分类Dev

如何查找和替换数组中的空值?

来自分类Dev

用另一个numpy数组中的值替换numpy数组中的值

来自分类Dev

numpy中的随机值,其中

来自分类Dev

将char替换为char数组中的值

来自分类Dev

将字符串替换为数组中的值

Related 相关文章

热门标签

归档