2012-10-02 4 views
-1

작은 문제가 있지만 쉬운 대답을 찾을 수 없습니다. 질문하는 것이 어리 석습니다.numpy를 사용하여 파이썬에서 스칼라와 ndarray 오류

어떻게 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 : 오류 :되지 않는 피연산자 타입 (들)에 대한 * 'INT'및 'numpy.ndarray를'. 텍스트 파일 uu.txt는 헤더가 첫 번째 라인 인 60 * 60 매트릭스입니다. 필요한 경우 게시 할 수 있습니다.

감사합니다.

+2

곱셈 pls 바로 전에't1'을 인쇄 할 수 있습니까? – none

+0

인쇄물 t1을 넣었습니다. 출력은 다음과 같습니다. [1.09000000e + 02 2.19000000e + 02 3.28000000e + 02 ..., 4.95031000e + 05 4.95141000e + 05 4.95250000e + 05] – Paulinchen2

답변

2

놀랍습니다. datandarray 인 경우 t1=data[:,0]ndarray이고 int로 곱하면 문제가 발생하지 않습니다. 아직

:

  • 당신은 그것의 .shape뿐만 아니라 t1의 유형을 확인할 수 있습니다. 난 당신이 대신 (1/1000)하지만 (1./1000)을 계산하고 싶지 않아 확신 t1=np.asarray(data[:,0])
  • : (1/1000)는 정수 나누기의 미덕 0입니다 ...
  • 당신은 단지의 경우 ndarrayt1을 강제 할 수
  • +0

    (1./1000) 이 일을 통해. 나는 여전히 초기 오류를 이해하지 못합니다. 왜 1/1000은 너무 작습니까? 나는 t1 = np.asarray (데이터 [:, 0])를 시도했지만 같은 오류가 발생했습니다. – Paulinchen2

    +0

    나의 이론 :'ndarray '는 잘못된'dtype'(예를 들어'str')으로 끝 맺었습니다. 예를 들어,'2 * array ([2], dtype = str)'는'TypeError : * int '와'numpy.ndarray '에 대해 지원되지 않는 피연산자 유형을 제공합니다. .. – DSM

    +2

    'from __future__ import division'은 정수 나누기 문제도 해결합니다 ('1/2 == 0.5'). 이것이 파이썬 3의 기본 동작입니다. –

    관련 문제