簡體   English   中英

python中的嵌套for循環中的2D數組?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM