[英]2D array in a nested for loop in python?
我是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”的方式有問題
我已經從類似問題的答案中嘗試了幾種修復方法,但是都無法使它們起作用。
任何幫助將不勝感激!
您正在導入numpy
,因此您不妨使用它:)對於這種類型的使用,Numpy數組效率更高,用途更廣泛*
問題是您沒有voltageArray
期望的形狀創建voltageArray
,實際上是將其初始化為兩個列表的列表,第一個內部列表的長度為25,第二個內部列表的長度為630。實際上想要一個形狀為(25,630)的2D數組。
timeArray = np.zeros(625) # Array of 625 zeros
voltageArray = np.zeros((25, 630)) # Array of zeros of shape (25,630)
for i in range(0, 625):
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])
*當您不知道List
的大小或包含的對象時, List
會很好。 但是在這里,您知道形狀和內容,因此最好使用numpy.array
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.