You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将numpy布尔数组中的True和False分别转换为1和-1

Numpy布尔数组转换为1/-1的实现方案

核心实现逻辑

你当前得到的布尔数组中,True在numpy数值运算中会自动映射为1,False映射为0,基于这个特性可以快速完成转换,有三种常用实现方式:

  • 方法1:算术运算转换(性能最优)
    直接在原有表达式后做数值计算,一行完成转换:
    strat1 = (np.random.rand(2 ** M, N) > 0.5) * 2 - 1
    
    原理:布尔值乘2后得到2/0,再减1就得到1/-1,完全符合需求。
  • 方法2:np.where实现(可读性最高)
    显式指定条件匹配和不匹配时的返回值,代码逻辑更易懂:
    strat1 = np.where(np.random.rand(2 ** M, N) > 0.5, 1, -1)
    
  • 方法3:直接生成目标数组(代码最简洁)
    不需要先生成随机数再做判断,直接调用np.random.choice一步生成符合要求的数组:
    strat1 = np.random.choice([1, -1], size=(2**M, N))
    

修改后的完整代码示例

你可以根据自己的需求选择任意一种方法替换原代码中strat1的生成逻辑即可:

import numpy as np


for ca in np.shape(An):
    N = An[(ca - 1)]
    for M in range(Mi, Mm):
        crep = rep
        winr = np.random.rand(M, 1)
        # 下方三个实现任选其一即可
        strat1 = (np.random.rand(2 ** M, N) > 0.5) * 2 - 1
        # strat1 = np.where(np.random.rand(2 ** M, N) > 0.5, 1, -1)
        # strat1 = np.random.choice([1, -1], size=(2 ** M, N))

内容的提问来源于stack exchange,提问作者JakeB18900

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 02:54:02