python中用户输入的多维数组

2024-05-20 14:10:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我用的是Jupyter笔记本,我是Python新手,我试图从多维数组中的用户获取值我是怎么做到的?我写了一些代码,在输入第一个值之后,我得到了我不理解的错误

错误:

Traceback (most recent call last)
   <ipython-input-64-4d8986a5e412> in <module>
          5 for i in range(lengthrow):
          6     for j in range(lengthcol):
    ----> 7         arr[i][j]=int(input("enter value"))
          8 print(arr)

IndexError: index 0 is out of bounds for axis 0 with size 0

代码:

from numpy import*
arr = array([[],[]])
lengthrow=int(input("enter array row length"))
lengthcol=int(input("enter array col length"))
for i in range(lengthrow):
    for j in range(lengthcol):
        arr[i][j]=int(input("enter value"))
print(arr)

Tags: 代码inforinputvalue错误rangearray
3条回答

您可以在此处使用列表理解,因为最终结果是列表列表:

lengthrow = int(input("enter array row length: "))
lengthcol = int(input("enter array col length: "))

arr = [[int(input("enter value: ")) for _ in range(lengthcol)] for _ in range(lengthrow)]

print(arr)

问题您的代码:

^{pr2}$

这意味着您在数组中有一个大小为0的列,因此当您执行arr[0][0]操作时,它会抛出错误。在

我接受了“奥斯汀伟大的回答”并做了一些小小的改变:

import numpy as np

n_rows = int(input("Enter number of rows: "))
n_cols = int(input("Enter number of columns: "))

arr = [[int(input("Enter value for {}. row and {}. column: ".format(r + 1, c + 1))) for c in range(n_cols)] for r in range(n_rows)]

print(np.array(arr))

输出为:

^{pr2}$

您得到了一个异常,因为您初始化了一个空数组并使用了无效的索引。有了这个答案,您就可以在输入用户输入之后生成数组。在


下面是一行代码(arr = [[...)的长版本,它给出了相同的结果:

outer_arr = []
for r in range(n_rows):
    inner_arr = []
    for c in range(n_cols):
        num = int(input("Enter value for {}. row and {}. column: ".format(r + 1, c + 1)))
        inner_arr.append(num)
    outer_arr.append(inner_arr)

print(np.array(outer_arr))

问题在于初始数组的形状:

In [1]: arr = np.array([[], []])
In [2]: arr
Out[2]: array([], shape=(2, 0), dtype=float64)
In [3]: arr[0]
Out[3]: array([], dtype=float64)
In [4]: arr[0][0]
... 
IndexError: index 0 is out of bounds for axis 0 with size 0

把这个数组想象成2行0列。不能引用不存在的列。而且,与其他一些语言不同,您不能简单地通过引用新索引来增长数组。一旦创建,大小是固定的。在

虽然其他人已经展示了不错的列表理解方法,但我将展示如何正确使用您的方法:

^{pr2}$

相关问题 更多 >