gpt4 book ai didi

Python:列表索引必须是整数,而不是元组

转载 作者:太空宇宙 更新时间:2023-11-03 11:08:21 25 4
gpt4 key购买 nike

我正从 Matlab 转向 Python,所以我还只是 Python 的新手。我正在尝试为一些数据分析创建一段基本代码。它应该读入指定目录中的所有 .txt 数据文件,并用实际 .txt 文件的名称标记它们。我已经设法找到一种方法来使用字典来完成这项工作,但如果有更好的方法,我将非常感激听到它。

一旦我可以访问数据,我就想创建一个包含该数据的操纵版本的新列表。为此,我想创建一个新的 n x m 列表或数组,但是我找不到如何正确初始化这样的列表。我最近的努力导致以下错误:

列表索引必须是整数,不能是元组

代码如下:

import sys
import os
import re
import string
from numpy import *

listing = os.listdir(path)
dic = {} # define a dictionary to map the datafiles to while maintaining their filename

for filename in listing:
match = re.findall(r'[\w.]+\.txt', filename) # Use a regular expression findall function to identify all .txt files
if match:
dic[match.pop()[:-4]] = loadtxt(filename) # Drop the .txt and assign the datafile its original name

E = []
E[:,0] = dic['Test_Efield_100GHz'][:,0]
E[:,1] = dic['Test_Efield_100GHz'][:,1]
E[:,2] = abs(dic['Test_Efield_100GHz'][:,4]+dic['Test_Efield_100GHz'][:,7]*1j)**2
E[:,3] = abs(dic['Test_Efield_100GHz'][:,5]+dic['Test_Efield_100GHz'][:,8]*1j)**2
E[:,4] = abs(dic['Test_Efield_100GHz'][:,6]+dic['Test_Efield_100GHz'][:,9]*1j)**2

感谢任何反馈!

最佳答案

您在标准 Python list 类型(您的 E)变量上使用扩展切片语法,只有 numpy 库支持它。

您必须使用 E.append() 来为其添加新值:

E.append(dic['Test_Efield_100GHz'][:,0])

或者简单地将整个列表定义为一组表达式:

E = [
dic['Test_Efield_100GHz'][:,0]
dic['Test_Efield_100GHz'][:,1]
abs(dic['Test_Efield_100GHz'][:,4]+dic['Test_Efield_100GHz'][:,7]*1j)**2
abs(dic['Test_Efield_100GHz'][:,5]+dic['Test_Efield_100GHz'][:,8]*1j)**2
abs(dic['Test_Efield_100GHz'][:,6]+dic['Test_Efield_100GHz'][:,9]*1j)**2
]

或者改用 numpy 数组。

strlisttuple 等标准 python 序列类型仅支持简单索引:

E[0]
E[-2]

或普通切片:

E[:10]
E[1:2]
E[3:]
E[:-1]

关于Python:列表索引必须是整数,而不是元组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13402607/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com