【问题标题】:IndexError: List index out of range - creating 2d array of random numbersIndexError:列表索引超出范围 - 创建 2d 随机数数组
【发布时间】:2020-04-26 20:10:21
【问题描述】:

我正在尝试在 python 中生成一个 2d 随机数数组,我尝试了以下操作,但它返回的 indexError 列表索引超出范围。我不明白为什么会这样。

from random import random
n=10
t=5
Prob=[[] for x in xrange(n)]


for i in range(n):
   for j in range(t):
      Prob[i][j].append(random())
print(Prob)
print(Prob[1][1])

感谢您对此提供的任何帮助 谢谢

【问题讨论】:

  • 创建Prob 后,您应该将其打印出来并查看它的外观。它看起来像 [[], [], [], [], [], [], [], [], [], []] ,当 ij 从 0 开始时,Prob[0] 看起来像 []。因此Prob[0][0] 没有意义,这是一个空列表,第 0 个索引处没有项目。

标签: python arrays indexing


【解决方案1】:

这是使用numpy的简单方法:

# generate 6 numbers between 0 to 100
import numpy as np
np.random.randint(0, 100, 6).reshape(-1, 2)

您可以像这样修复您的代码:

from random import random
n=10
t=5
Prob=[[] for x in range(n)]


for i in range(n):
    for j in range(t):
        Prob[i].append(random())

print(Prob)

【讨论】:

  • 感谢您的回复,但是,当您离开并在另一个循环中引用它时,您如何调用它?因为它没有 j 标识符!
  • 为了进一步解释我之前的评论,如果我想在说 vba 或 fortan 中引用数组中的特定元素,我会做Prob(i,j),然后如果我想要二维数组的第一个条目我会做Prob(1,1) python 中的等价物是什么?
猜你喜欢
  • 2020-08-09
  • 1970-01-01
  • 1970-01-01
  • 2011-10-31
  • 2015-06-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多