-1

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

如何将标量与 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: unsupported operand type(s) for *: 'int' and 'numpy.ndarray'。文本文件 uu.txt 是一个 60*60 的矩阵,第一行是标题。如果需要,我可以发布它。

谢谢

4

1 回答 1

2

这有点令人惊讶。如果data是 a ndarray,那么t1=data[:,0]也是 a ndarray,将它乘以 int 应该没有任何问题。

仍然:

  • 您可以检查的类型t1以及它的.shape.
  • 您可以强制t1以防ndarray万一:t1=np.asarray(data[:,0])
  • 我很确定你不想计算(1/1000),而是(1./1000)(1/1000)0凭借整数除法......
于 2012-10-02T13:43:32.840 回答