填写numpy数组

M_M*_*ose 1 python numpy

我正在创建一个10x5的numpy零数组,我希望用1-10的数字填充每列.但是我有一个问题因为它只填充第一列而list.pop()不起作用加上我认为我的嵌套for循环,即使我尝试使用不同顺序的行和首选项.任何帮助将不胜感激.

i = 0
j = 0

for column in matrix:

    preferences = [1,2,3,4,5,6,7,8,9,10]

    random.shuffle(preferences)

    for number in preferences:

        for row in matrix:
            chosen = preferences.pop(0)
            matrix[j,i] = chosen
        j+= 1

i+= 1
Run Code Online (Sandbox Code Playgroud)

yos*_*bai 6

由于您在示例中使用了pop,我认为您可能不希望在每个列中重复.numpy.random.shuffle将元素移动到位.

>>> M = N.repeat(N.arange(1,11), 5).reshape(10,-1)
>>> M
array([[ 1,  1,  1,  1,  1],
       [ 2,  2,  2,  2,  2],
       [ 3,  3,  3,  3,  3],
       [ 4,  4,  4,  4,  4],
       [ 5,  5,  5,  5,  5],
       [ 6,  6,  6,  6,  6],
       [ 7,  7,  7,  7,  7],
       [ 8,  8,  8,  8,  8],
       [ 9,  9,  9,  9,  9],
       [10, 10, 10, 10, 10]])
>>> for i in range(5): 
...    N.random.shuffle(M[:,i])
>>> M
array([[ 3,  9,  7,  9,  2],
       [ 5,  4,  2,  5,  3],
       [ 8,  8,  8,  1,  4],
       [ 1,  2,  6, 10,  8],
       [ 2,  1,  9,  2,  5],
       [ 7,  7, 10,  7,  1],
       [ 4,  3,  5,  8,  9],
       [ 6,  5,  4,  4,  7],
       [10, 10,  3,  6,  6],
       [ 9,  6,  1,  3, 10]])
>>>
Run Code Online (Sandbox Code Playgroud)