我对Python很陌生......我很难将我的1d数组的内容插入到非线性方程式中,因此我可以最终绘制结果。我的代码如下:
import numpy as np
import matplotlib.pyplot as plt
def readfiles(file_list):
""" read <TAB> delemited files as strings
ignoring '# Comment' lines """
data = []
for fname in file_list:
data.append(
np.genfromtxt(fname,
comments='#', # skip comment lines
delimiter='\t',
dtype ="|S", autostrip=True).T)
return data
data = readfiles(['CR1000_rawMeasurements_15m.txt'])
def column(matrix, i):
return [row[i] for row in matrix]
x = column(data,18)
for i in x:
thermTemp1_degC = 1/(1.401E-3 + 2.377E-4*np.log(i) + 9.730E-8*np.log(i)**3)-273.15
我所能成功完成的只是从我的数据中提取我需要的列。当我运行这个脚本时,我得到'TypeError:没有为这种类型实现。' (我的1d数组,x,现在只是一列零。)我该如何解决这个问题?
答案 0 :(得分:0)
这里有几点需要解决。
您在评论中给出的数组有点奇怪,但您可以使用numpy检索列:
data = [[ 737055., 0.], [ 737055., 0.], [ 737055., 0.], [ 737055., 0.], [ 737055., 0.], [ 735773., 0.], [ 735773., 0.], [ 735773., 0.]]]
data
=> [[[737055.0, 0.0],
[737055.0, 0.0],
[737055.0, 0.0],
[737055.0, 0.0],
[737055.0, 0.0],
[735773.0, 0.0],
[735773.0, 0.0],
[735773.0, 0.0]]]
column_0 = np.array(data)[0][:, 0]
column_1 = np.array(data)[0][:, 1]
column_0
=> array([ 737055., 737055., 737055., 737055., 737055., 735773.,
735773., 735773.])
column_1
=> array([ 0., 0., 0., 0., 0., 0., 0., 0.])
由于x
是一个numpy数组(如果你使用上面的列代码),你不需要把它放在for循环中:
thermTemp1_degC = 1/(1.401E-3 + 2.377E-4*np.log(i) + 9.730E-8*np.log(i)**3)-273.15
此处thermTemp1_degC
是一个与x
大小相同的numpy数组。