假设我有二维numpy数组A
,B
和P
,它们都有相同的形状。A
和B
表示两个选择,P
包含区间[0,现在我想创建一个新的数组C
,其中C[i,j]
由A[i,j]
以P[i,j]
的概率给出,由B[i,j]
以1-P[i,j]
的概率给出。
这里,在A
填充零、B
填充一和随机概率P
的示例代码中:
import numpy as np
rows = 4
columns = 5
A = np.zeros((rows, columns)) # all zeros
B = np.ones_like(A) # all ones
P = np.random.rand(*A.shape) # random numbers in interval [0,1)
C = np.array([[
np.random.choice([A[nrow,ncol], B[nrow,ncol]], p=[P[nrow,ncol], 1-P[nrow,ncol]])
for ncol in range(P.shape[1])]
for nrow in range(P.shape[0])])
有人知道不使用for循环的方法吗?(对于大型数组,for循环极大地限制了性能......)
1条答案
按热度按时间6tdlim6h1#
我找到了一个变通方法。只需获取一个随机数组
r = np.random.rand(*A.shape)
,然后这样就完成了。不过,像这样的东西一定是标准库的一部分。