gelen randomize 3D numpy dizi hesaplamak 2 boyutlu bir tam sayı dizisi var, biz buna "A" diyoruz. B[i,j,:]
o içinde A[i,j]
1s
içeren, yani, herhangi bir sabit (i, j) içinhızlı bir şekilde 2B numpy dizi
sum(B[i,j,:])==A[i.j]
:tüm 1s ve 0s bu şekilde bir 3-boyutlu bir dizi "B" oluşturmak isteyen
- 1'ler rastgele 3. boyuta yerleştirilir.
Standart python indekslemeyi kullanarak bunu nasıl yapacağımı biliyorum, ancak bu çok yavaş oluyor.
Numpy'yi hızlı hale getirebilecek özelliklerden yararlanarak bunu yapmanın bir yolunu arıyorum.
B=np.zeros((X,Y,Z))
indexoptions=range(Z)
for i in xrange(Y):
for j in xrange(X):
replacedindices=np.random.choice(indexoptions,size=A[i,j],replace=False)
B[i,j,[replacedindices]]=1
Birisi daha hızlı bir şekilde bunu nasıl açıklayabilir misiniz: Burada
Ben standart indeksleme kullanarak yapacağını nasıl?
Düzenleme: İşte bir örnek "A": Bu durumda
A=np.array([[0,1,2,3,4],[0,1,2,3,4],[0,1,2,3,4],[0,1,2,3,4],[0,1,2,3,4]])
X = Y = 5 ve Z> = 5
Bu konuda ilerleme kaydetmeye çalışıyorum, daha basit bir soru sordum: http://stackoverflow.com/questions/26310897/numpy-create-bool-array-like-repeat-but-in-multiple-dimensions - ama sonra ben planladığım np.random.shuffle (np.rollaxis (B, 2)) 'nin tüm satırları bağımsız olarak karıştırmadığını fark ettim, bu yüzden bu henüz bir cevap değil. Yapı taşları belki. :) –