【发布时间】:2015-11-24 19:44:03
【问题描述】:
我是 python 新手,一直在尝试从 excel 文件中读取数据集并将其存储在数组/列表中。
我正在使用“openpyxl”来处理 excel 文档,因此存在一些非标准语法,但是,所有这些似乎都有效,我认为问题在于二维数组位。
这可能是一个非常基本的新手错误,但由于我习惯于使用 C++ 工作,我很难弄清楚它!
(为了清楚起见,我包含了打印语句,因为这就是我试图排除故障的方式)
%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt
import math as mth
import scipy as science
from array import array
from openpyxl import load_workbook
wb2 = load_workbook(r'C:"path and file name"')
ws1 = wb2.active
timeArray = [None]*630
voltageArray = [[None]*25,[None]*630]
i=0
j=0
for i in range (0, 625):
j=0
timeArray[i] = ws1.cell(row = i+1, column = 4).value
for j in range (0, 15):
voltageArray[j][i] =(ws1.cell(row = i+1, column = j+5).value)
print(j, i)
print(voltageArray[j][i])
准确打印出来;
0 0
-30
1 0
-29
到目前为止,哪些是正确的数字,但此时它失败并给出以下错误;
IndexError Traceback (most recent call last)
<ipython-input-9-fa1751a1a2f2> in <module>()
20 timeArray[i] = ws1.cell(row = i+1, column = 4).value
21 for j in range (0, 15):
---> 22 voltageArray[j][i] =(ws1.cell(row = i+1, column=j+5).value)
23 print(j, i)
24 print(voltageArray[j][i])
IndexError: list index out of range
电子表格中没有任何内容会导致此问题,因为下一个单元格已填充且格式与前两个单元格完全相同。
我认为我设置或使用二维数组“voltageArray”的方式有问题
我已经从类似问题的答案中尝试了几种修复方法,但都无法使它们中的任何一个起作用。
任何帮助将不胜感激!
【问题讨论】:
-
一个问题 - 您不需要在 Python 中初始化列表。或任何变量,就此而言。
-
目前,
voltageArray是一个 2 项列表,第一项是 25 个[None]s 的列表,第二项是 630 个[None]s 的列表。你真的希望它是一个包含 25 个项目的列表,每个项目有 630 个值吗?因为现在,当j>1时,它会抛出该错误,因为voltageArray中只有两个值 -
您正在导入
numpy但使用列表。相反,请尝试使用np.zeros((25, 630))(例如)启动阵列。您可能不需要导入math、scipy或array。摆脱i = 0和j = 0—range()s 会处理一切。
标签: python arrays list multidimensional-array nested-loops