2016-04-09 19 views
1

Matrisi almak ve hesaplamalar için daha fazla kullanmak istiyorum. Ama bu hata her şey almaya devam ben yorum yapmaktan numpy.loadtext (sys.stdin)2d yapısını kaybetmeden python'daki sys.stdin'den bir matrisi nasıl girebilirim ve aynı zamanda üzerinde numpy işlemlerini kullanabilir miyim?

Error : File "/usr/lib/python2.6/site-packages/numpy/lib/io.py", line 630, in loadtxt 
    X.append(tuple([conv(val) for (conv, val) in zip(converters, vals)])) 
ValueError: invalid literal for float(): <open 

kodu kullanın:

#!/usr/bin/python 
import sys 
import numpy as np 
c = np.zeros(shape=(2,2)) 
c = np.loadtxt(sys.stdin) 
d=[0.0,0.0] 
for i in range(0,1): 
    d[i]=np.linalg.det(c) 
    print d[i] 
+0

Lütfen girişinizi de gösterin. –

+0

#!/Usr/bin/piton import sys olarak içe numpy np C = np.zeros (şekil = (2,2)) C = np.loadtxt (sys.stdin) D = [0.0,0.0 ] aralığında i için (0,1): d [i] = np.linalg.det (c) baskı d [i] –

+0

@Roland Smith üzerinde yorum kontrol –

cevap

0

np.loadtxt(stdin) hattı ile giriş, satır okur. Satırı delimiter (burada varsayılan beyaz boşluk) üzerine böler ve sonra her dizeyi bir float'a dönüştürmeyi dener. Kısaca:

In [49]: txt="""12.23 23.2 
    ...: 233 2.23 
    ...: """ 

In [50]: for lines in txt.splitlines(): 
    ...:  print [float(i) for i in lines.split()] 
    ...:  
[12.23, 23.2] 
[233.0, 2.23] 

stdinhadoop gelen çerçeve böyle bir şey geliyor mu?

Sormaya devam ediyorum - stdin metni nasıl görünüyor.

+0

Oh okunda iletilen hatayı verir. Şöyle görünüyor: - Sadece bir örnek [[1. 4. 2. 6. 6.] [2. 5. 6. 0. 7.] [3. 8. 2. 9. 5.] [4 8. 7.] 8.]] @hpaulj –

+0

Son bir başka soruya verdiğim cevaba bakın: http://stackoverflow.com/a/36520026/901925 – hpaulj

+0

Evet, sadece çıkışımı vermek için çıkışımı oluşturdum ve np.loadtxt çalışıyordu. Yine de çok teşekkürler, cevabınız büyük yardım oldu @hpaulj –