带有numpy的python中的标量和ndarray出错

时间:2012-10-02 13:36:38

标签: python numpy multidimensional-array

我有一个小问题,但我不能找到一个简单的答案。我觉得这很愚蠢。

如何将标量与numpy.ndarray相乘?

import fileinput,sys,re,csv,scipy,os,numpy,pylab
from collections import defaultdict
from matplotlib.pyplot import *
from StringIO import StringIO
import numpy as num
a = open("testt.txt", "r")
b=[ raw.strip().split() for raw in a]
c=np.array(b)
d=c.transpose()  
data=np.loadtxt("uu.txt",skiprows=1,dtype=None,delimiter='\t')
t1 = data[:,0]
t=(1/1000)*t1
s = data[:,9]
pylab.plot(t1, s)
pylab.xlabel('time (ms)')
pylab.ylabel('Zone height (mm)')
pylab.grid(True)
pylab.savefig('simple_plot')
pylab.show()

错误在行t =(1/1000)* t1中,这给了我错误: TypeError:*:'int'和'numpy.ndarray'的不支持的操作数类型。文本文件uu.txt是一个60 * 60矩阵,标题作为第一行。如果必要,我可以发布它。

谢谢

1 个答案:

答案 0 :(得分:2)

这有点令人惊讶。如果datandarray,则t1=data[:,0]也是ndarray,您不应该有任何问题将其乘以int。

还是:

  • 您可以查看t1的类型及其.shape
  • 您可以强制t1成为ndarray,以防万一:t1=np.asarray(data[:,0])
  • 我很确定你不想计算(1/1000)而是(1./1000)而不是(1/1000)因为整数除法而0 ...