我遇到了一个问题,因为我希望通过随机选择实现矩阵,从前一列替换,而不选择与此元素位于同一行的数字。
例如:
#I create a matrix "pop" where there are numbers in the first and second column and where there are zeros on the other columns
tab = np.array([[3, 2, 1, 0, 4, 6], [9, 8, 7, 8, 2, 0]])
tab1=tab.transpose()
pop=np.zeros((6,8),int)
pop[:,0:2]=tab1
#I create a function "cuntage" which complete the matrix "pop" by a
#random sampling with replacement from the second previous column
def countage (a):
for i in range (0,6):
pop[i,a]=np.random.choice(pop[:,(a-2)],1,replace=True)
# loope to complete the array "pop"
for r in range(2,8):
countage(r)
pop
但问题是我希望通过从第二个前一列中随机选择,选择矩阵的每个元素,但不选择与此元素位于同一行的数字。
例如,在矩阵弹出窗口中,元素pop [0,2]在pop [1:6,0]中被选中。
感谢您的回复!!
- )
答案 0 :(得分:1)
您可以将所需的阵列粘合在一起
toChooseFrom = np.concatenate((pop[:i,(a-2)], pop[(i+1):,(a-2)]))
然后像你一样使用np.random.choice:
pop[i,a]=np.random.choice(toChooseFrom,1,replace=True)
在上面给出的示例中,元素pop [0,2]将从两个数组的串联中进行选择
pop[:i,(a-2)] == pop[:0,0] == []
pop[(i+1):,(a-2)] == pop[1:6,0]
只是
pop[1:6,0]