【发布时间】:2020-06-18 14:24:57
【问题描述】:
我有一个大小为 NxNxN 的 3D 数组。我想用随机布尔值填充这个数组,我可以这样做:
a = np.random.choice([False,True],size=(N,N,N))
但是,我希望根据元素在数组中的位置来选择 True 或 False 的可能性(或 p 值)。我想也许我可以使用 p-value 参数来做到这一点,但只有这样才能选择为整个数组选择 True/False 的频率。
有没有办法为整个 (N,N,N) 数组设置特定的 p 值?我猜这将相当于一个 (N,N,N,2) 数组,额外的 2 用于 False 的 p 值和 True 的 p 值(尽管 p_True = 1 - p_False)。我觉得有一种我没有想到的更简单的方法。
编辑: 所以说我想创建一个简单的数组a,形状为(1,2)(只有两个元素,但故意多维)。我想用 True/False 填充这两个元素。我有另一个数组,其中填充了我希望这些元素为 False 的可能性或 p 值,例如 p_False,其中 p_False.shape = (1,2)。假设我希望第一个元素有 25% 的可能性为 False,但第二个元素有 50% 的可能性为假,那么 p_False = np.array([0.25,0.5])。
我尝试了一些类似的东西:
a = np.random.choice([[False,True],[False,True]],p=[[.25,.75],[.5,.5]])
但我得到一个 ValueError: a must be 1-dimensional。
【问题讨论】:
-
你能详细说明
to be based on the element's position in the array吗?也许使用一个小的 2D(N,N)数组来演示?