使用numpy-type解析csv

2024-10-01 15:44:42 发布

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

我得到一个TypeError

Traceback (most recent call last):
  File "...Transients_tP100us.py", line 20, in <module>
    temp[key] = data[key]["Temperature"].reshape((num_temp, num_dp)).T
TypeError: 'numpy.int32' object does not support item assignment

运行此脚本:

import numpy as np

transient_files = {"50ms": "Transients_50ms.TXT",
                   "500ms": "Transients_500ms.TXT",
                   "5000ms": "Transients_5000ms.TXT"}

num_dp = 513
num_temp = 37

data = {}
time = {}
temp = {}
cap = {}

for key, value in transient_files.items():
    data[key] = np.genfromtxt(value, delimiter=";", names=[
                              "Time", "Temperature", "Capacitance"])

    time[key] = data[key]["Time"].reshape((num_temp, num_dp)).T    
    temp[key] = data[key]["Temperature"].reshape((num_temp, num_dp)).T
    cap[key] = data[key]["Capacitance"].reshape((num_temp, num_dp)).T * 1e-12

如果我只运行Transient_50ms.TXT文件,它运行时不会出错,它只针对另外两个文件抛出。两个文件之间的唯一区别是,50ms文件在第三列中没有负值,其他文件有负值。 所以数据文件中有和没有负值的两行是这样的:

 5.065E-01; 3.270E+02;-1.182E-01
 6.832E-03; 3.391E+02; 7.501E-01

我查了一下:

for i in np.arange(0, len(data[key]["Time"])):
    if type(data[key]["Time"][i]) is not np.float64:
        print(i)

for i in np.arange(0, len(data[key]["Temperature"])):
    if type(data[key]["Temperature"][i]) is not np.float64:
        print(i)

for i in np.arange(0, len(data[key]["Capacitance"])):
    if type(data[key]["Capacitance"][i]) is not np.float64:
        print(i)

查看是否所有条目都被真正识别为第64页,就是这样。我想解析数据文件是个问题,尤其是负值,但我不知道问题在哪里以及如何解决。你知道吗


Tags: 文件keyintxtfordatatimenp
1条回答
网友
1楼 · 发布于 2024-10-01 15:44:42

摘自@SpghttCd-s评论:

很可能在进入第二个循环之前重新定义了temp,根据注释,第二个循环似乎解决了问题。你知道吗

我在社区wiki上做了这个回答,因为这个问题是由@SpghttCd在评论中回答的。你知道吗

相关问题 更多 >

    热门问题