Skip to main content
 首页 » 编程设计

python之填充 numpy 数组

2025年05月04日15duanxz

我正在创建一个 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 

请您参考如下方法:

由于您在示例中使用了 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]]) 
>>>