填充numpy数组

1 投票
2 回答
3330 浏览
提问于 2025-04-17 05:23

我正在创建一个10行5列的numpy零数组,并希望用1到10的随机数字填充每一列。不过我遇到了问题,因为它只填充了第一列,而且list.pop()这个方法也不管用。此外,我觉得我的嵌套循环有问题,尽管我尝试过以不同的顺序使用行和偏好。任何帮助都将非常感谢。

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

2 个回答

1

在编程中,有时候我们会遇到一些问题,像是代码运行不正常或者出现错误。这些问题可能是因为我们写的代码有bug,或者是使用的工具和库不兼容。解决这些问题通常需要我们仔细检查代码,找出哪里出了问题。

有些时候,社区里的其他人可能也遇到过类似的问题,他们会在网上分享自己的经验和解决方案。这样,我们就可以从他们的经验中学习,找到解决自己问题的方法。

总之,编程就像是解谜游戏,我们需要不断尝试和学习,才能找到正确的答案。

>>> import numpy as NP

>>> fnx = lambda v : NP.random.randint(1, 11, v)
>>> A = NP.zeros(5, 10)
>>> for c in range(A.shape[0]):
        A[c,:] = fnx(10)
>>> A = A.T
>>> A
  array([[  5.,   1.,   3.,   8.,   5.],
         [  4.,  10.,   4.,   3.,  10.],
         [  6.,   6.,   3.,   2.,   7.],
         [  4.,   4.,  10.,   5.,   4.],
         [  8.,   6.,   6.,   2.,  10.],
         [ 10.,   9.,  10.,   6.,  10.],
         [  7.,   4.,   2.,   2.,   7.],
         [  9.,   2.,   9.,   4.,   7.],
         [ 10.,   5.,   3.,   5.,   7.],
         [  3.,   9.,   3.,   3.,   1.]])
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]])
>>>

撰写回答