python numpy中的错误

python numpy中的错误,python,numpy,Python,Numpy,我试着运行下面写的脚本。重点是打印“rab” from numpy import * import numpy as np import matplotlib.pyplot as plt from scipy import interpolate x = [64, 67, 70.459, 73, 76] y = [0.697, 0.693, 0.694, 0.698, 0.702] z = [0.748, 0.745, 0.747, 0.757, 0.763] delT = 1 f =

我试着运行下面写的脚本。重点是打印“rab”

from numpy import *
import numpy as np
import matplotlib.pyplot as plt
from scipy import interpolate


x = [64, 67, 70.459, 73, 76]
y = [0.697, 0.693, 0.694, 0.698, 0.702]
z = [0.748, 0.745, 0.747, 0.757, 0.763]


delT = 1

f = open('volume-temperature.dat', 'r')
V = []
for line in f:
        parts = line.split()
        if len(parts) > 1:
                #print parts[1]
                V.append(parts[1])
f.close()

for M in range(0,5):
        T = 0+M*delT
        if M == 0:
            rab = np.interp(V[M], x, y)
            print rab
        else:
            print M
问题是,在打印“rab”时,我遇到以下错误:

return compiled_interp(x, xp, fp, left, right)
ValueError: object of too small depth for desired array

它看起来有一些基本的错误,但由于我是Python新手,所以希望能提供一些帮助。M=0的N.B.V[M]是70.31

您的列表
V
是一个字符串列表。在将这些值传递到
np.interp
之前,必须将其转换为浮点数

您可以更改此选项:

        V.append(parts[1])
为此:

        V.append(float(parts[1]))

旁白:既然你是新来的,我要给你一个重要的警告:不要使用类似numpy import*的星型导入。虽然有时它会很方便,但它会将某些内置函数(如
sum
)替换为行为非常不同的numpy版本(即,可能会产生相反的结果)在某些情况下。我会添加到DSM中,不将其导入两次使用
从numpy导入*
将numpya导入为np
我尝试了您的建议,但问题仍然是一样的。如果我只是将70.31而不是V[M],那么它就工作了。但是因为我有一系列的值,所以在任何情况下我都必须使用V[M]。@TanmoyChakraborty在循环文件之后打印V[M]会发生什么?此外,我建议学习如何使用文件迭代器,因为它更简单、更简洁:-)(链接中的信息位于该部分的底部)非常感谢Warren提供了正确的解决方案。它正在工作。谢谢