0
我读一个纸和它们提及作为如何以50%的概率沿x轴翻转3D数据?
与沿x轴50%的机会翻转数据。
鉴于输入数据是40x40x24。我如何执行上述要求?我使用Python 2.7版试图波纹管代码,但我不知道关于“50%的机会”,这意味着
data_flip = np.flipud(data)
data_flip = data[:, ::-1, :]
我读一个纸和它们提及作为如何以50%的概率沿x轴翻转3D数据?
与沿x轴50%的机会翻转数据。
鉴于输入数据是40x40x24。我如何执行上述要求?我使用Python 2.7版试图波纹管代码,但我不知道关于“50%的机会”,这意味着
data_flip = np.flipud(data)
data_flip = data[:, ::-1, :]
首先,为了选择出的概率n
元素p
,你可以简单地使用的:np.random.rand(n) < p
。 r = np.random.rand()
从[0, 1)
生成一个统一分布的数字,因此r
小于某个常量p
(其中p
在[0,1]中)的概率恰好为p
。该概率实际上是CDF of the distribution,在这种情况下,其中a = 0和b = 1:
F(p) = 0, p<0
p, 0<=p<=1
1, p>1
其次,沿x轴用np.fliplr
而非np.flipud
(其沿y轴翻转翻转数据):
# generate a 3D array size 3x3x5
A = np.array([[1,2,3],[4,5,6],[7,8,9]])
A = np.tile(np.expand_dims(A, axis=2), (1,1,5))
# index the 3rd axis with probability 0.5
p = 0.5
idxs = np.random.rand(A.shape[2]) < p
# flip left-right the chosen arrays in the 3rd dimension
A[:,:,idxs] = np.fliplr(A[:,:,idxs])
感谢您的回答。你能检查最后一行'AA [:,:,idxs] = np.fliplr(AA [:,:,idxs])''。是A,而不是AA?另外,你能解释一下'50%几率'的含义吗? – user8264
'AA'应该是'A' - 谢谢,修正了这个问题。我也阐述了50%的机会。附加代码中的前3行只是为了生成一些数据来处理(您已经拥有)。 – user2999345
啊我明白了,对不起。这个想法是随机选择一个概率为0.5的切片并将其翻转。非常感谢 – user8264