Python o'qish .txt va numpy bilan bir qatorda qo'yish

i want to create an array with numpy. The base is a .txt file which is given in the following form: enter image description here

Loadtxt bilan sinab ko'rdim:

data = np.loadtxt("myfile.txt",delimiter='\n',skiprows = 1)

"Zeit" va "Signal" bilan birinchi satrni o'tkazish kerak, faqat ushbu forma qatoriga kerak:

[[0, 1], [0.01, 2], [0.02, 3]]

"Zeit" va "Signal" dan olingan qiymatlar yorliq bilan ajralib turadi.

Men ushbu xatoni oldi:

ValueError: could not convert string to float: 
0
Yorliq ajratilgan uchun delimiter = '\ T' foydalaning
qo'shib qo'ydi muallif hpaulj, manba
Yorliq ajratilgan uchun delimiter = '\ T' foydalaning
qo'shib qo'ydi muallif hpaulj, manba
Ushbu faylni readlines bilan o'qish bilan bog'liq muammolar mavjud. stackoverflow.com/questions/42317644/… . loadtxt ga o'tish yordamga o'tmaydi. Original muammoni hal qilish kerak
qo'shib qo'ydi muallif hpaulj, manba
Ushbu faylni readlines bilan o'qish bilan bog'liq muammolar mavjud. stackoverflow.com/questions/42317644/… . loadtxt ga o'tish yordamga o'tmaydi. Original muammoni hal qilish kerak
qo'shib qo'ydi muallif hpaulj, manba
Faqatgina
qo'shib qo'ydi muallif hpaulj, manba
@hpaulj ular nemischa umumiy so'zlar ;-))
qo'shib qo'ydi muallif Paul Panzer, manba
@hpaulj ular nemischa umumiy so'zlar ;-))
qo'shib qo'ydi muallif Paul Panzer, manba
@hpaulj Men aslida ("har qanday bo'shliq") yorliqlarda ishlaydigan deyarli 100%
qo'shib qo'ydi muallif Paul Panzer, manba
@hpaulj Men aslida ("har qanday bo'shliq") yorliqlarda ishlaydigan deyarli 100%
qo'shib qo'ydi muallif Paul Panzer, manba
delimiter - bu ustunlarni ajratish uchun mo'ljallangan, ammo siz uni yangi satrga o'tkazasiz. Buni o'chirib tashlashni harakat qilib ko'ring, odatiy xatti-harakatingizda ishlash kerak.
qo'shib qo'ydi muallif Paul Panzer, manba
delimiter - bu ustunlarni ajratish uchun mo'ljallangan, ammo siz uni yangi satrga o'tkazasiz. Buni o'chirib tashlashni harakat qilib ko'ring, odatiy xatti-harakatingizda ishlash kerak.
qo'shib qo'ydi muallif Paul Panzer, manba
Men uni chegarachisiz sinab ko'rdim, lekin bir xil xato kelib tushdi:
qo'shib qo'ydi muallif Nekoso, manba
Men uni chegarachisiz sinab ko'rdim, lekin bir xil xato kelib tushdi:
qo'shib qo'ydi muallif Nekoso, manba
Bu holatda ajratuvchi bo'shliq emas, yangi satr. Ajratuvchi uchun parametrni olib tashlang, chunki asl qiymati har qanday bo'shliq bo'ladi.
qo'shib qo'ydi muallif justincai, manba
Bu holatda ajratuvchi bo'shliq emas, yangi satr. Ajratuvchi uchun parametrni olib tashlang, chunki asl qiymati har qanday bo'shliq bo'ladi.
qo'shib qo'ydi muallif justincai, manba

7 javoblar

Men sizning faylingizni yangitdan qayta yaratishga harakat qilaman

Zeit\tSignal
0.01\t1.1
0.02\t1.105
0.03\t1.108
0.04\t1.2
0.05\t1.205
0.06\t1.209

quyidagicha:

data=np.loadtxt('test.txt', skiprows=1)

va:

ValueError: could not convert string to float: b'0.01\\t1.1'

\ t mag'lubiyatini haqiqiy ichki oynalarga o'zgartirish (nusxa ko'chirish-nusxasi bilan yetkazish qiyin):

In [474]: data=np.loadtxt('test.txt', skiprows=1)
In [475]: data
Out[475]: 
array([[ 0.01 ,  1.1  ],
       [ 0.02 ,  1.105],
       [ 0.03 ,  1.108],
       [ 0.04 ,  1.2  ],
       [ 0.05 ,  1.205],
       [ 0.06 ,  1.209]])

Faylingizda faqat shu belgilar (bo'shliqlar yoki ustunlar orasidagi haqiqiy yorliqlar) bo'lganligiga ishonch hosil qiling. RTF yoki boshqa formatlangan test emas, balki aniq ASCII bo'lishi kerak.

Faqat bir necha kulgili chakacha muammoni hal qilyaptimi yoki yo'qligini bilish uchun mag'lubiyatga dtype harakat qilish mumkin.

In [478]: data=np.loadtxt('test.txt', dtype=str)
In [479]: data
Out[479]: 
array([["b'Zeit'", "b'Signal'"],
       ["b'0.01'", "b'1.1'"],
       ["b'0.02'", "b'1.105'"],
       ["b'0.03'", "b'1.108'"],
       ["b'0.04'", "b'1.2'"],
       ["b'0.05'", "b'1.205'"],
       ["b'0.06'", "b'1.209'"]], 
      dtype='
0
qo'shib qo'ydi

Men sizning faylingizni yangitdan qayta yaratishga harakat qilaman

Zeit\tSignal
0.01\t1.1
0.02\t1.105
0.03\t1.108
0.04\t1.2
0.05\t1.205
0.06\t1.209

quyidagicha:

data=np.loadtxt('test.txt', skiprows=1)

va:

ValueError: could not convert string to float: b'0.01\\t1.1'

\ t mag'lubiyatini haqiqiy ichki oynalarga o'zgartirish (nusxa ko'chirish-nusxasi bilan yetkazish qiyin):

In [474]: data=np.loadtxt('test.txt', skiprows=1)
In [475]: data
Out[475]: 
array([[ 0.01 ,  1.1  ],
       [ 0.02 ,  1.105],
       [ 0.03 ,  1.108],
       [ 0.04 ,  1.2  ],
       [ 0.05 ,  1.205],
       [ 0.06 ,  1.209]])

Faylingizda faqat shu belgilar (bo'shliqlar yoki ustunlar orasidagi haqiqiy yorliqlar) bo'lganligiga ishonch hosil qiling. RTF yoki boshqa formatlangan test emas, balki aniq ASCII bo'lishi kerak.

Faqat bir necha kulgili chakacha muammoni hal qilyaptimi yoki yo'qligini bilish uchun mag'lubiyatga dtype harakat qilish mumkin.

In [478]: data=np.loadtxt('test.txt', dtype=str)
In [479]: data
Out[479]: 
array([["b'Zeit'", "b'Signal'"],
       ["b'0.01'", "b'1.1'"],
       ["b'0.02'", "b'1.105'"],
       ["b'0.03'", "b'1.108'"],
       ["b'0.04'", "b'1.2'"],
       ["b'0.05'", "b'1.205'"],
       ["b'0.06'", "b'1.209'"]], 
      dtype='
0
qo'shib qo'ydi

Quyidagilarni boshqarib, nima qaytib kelishi haqida hisobot bera olasizmi? Xususan, bag ichida nima bor?

bag = []
i = 0
def probe(bit):
    global i
    i += 1
    try:
        return float(bit)
    except:
        bag.append((i, bit))
        return np.nan

data = np.loadtxt('myfile.txt', skiprows=1, converters={0:probe, 1:probe})

OK, harakat qilib ko'ring:

import itertools
data = np.loadtxt(itertools.filterfalse(lambda x: len(x.split())!=2, open('myfile.txt')), skiprows=1)
0
qo'shib qo'ydi
@Nekoso Javobingizning oxiriga qo'ygan narsani sinab ko'rsata olasizmi?
qo'shib qo'ydi muallif Paul Panzer, manba
@Nekoso Xo'sh, keyin. Oldinga va 7-satrga qarang. Bundan tashqari, siz hali ham bag ("np.loadtxt" ishlayotganidan so'ng)
qo'shib qo'ydi muallif Paul Panzer, manba
@Nekoso Afsuski, yo'g'on ichakni olib tashlashga harakat qiling.
qo'shib qo'ydi muallif Paul Panzer, manba
float (bit): ^ SyntaxError: noto'g'ri sintaksisi
qo'shib qo'ydi muallif Nekoso, manba
OK, yana bir marta sinab ko'rdim: ValueError: 7 satrda ustunlar soni noto'g'ri
qo'shib qo'ydi muallif Nekoso, manba
Mening .txt faylimda faqat 6 satr bor. Agar boshqasini qo'shsam, 8-satrda ustunlar soni noto'g'ri.
qo'shib qo'ydi muallif Nekoso, manba

Quyidagilarni boshqarib, nima qaytib kelishi haqida hisobot bera olasizmi? Xususan, bag ichida nima bor?

bag = []
i = 0
def probe(bit):
    global i
    i += 1
    try:
        return float(bit)
    except:
        bag.append((i, bit))
        return np.nan

data = np.loadtxt('myfile.txt', skiprows=1, converters={0:probe, 1:probe})

OK, harakat qilib ko'ring:

import itertools
data = np.loadtxt(itertools.filterfalse(lambda x: len(x.split())!=2, open('myfile.txt')), skiprows=1)
0
qo'shib qo'ydi
@Nekoso Javobingizning oxiriga qo'ygan narsani sinab ko'rsata olasizmi?
qo'shib qo'ydi muallif Paul Panzer, manba
@Nekoso Xo'sh, keyin. Oldinga va 7-satrga qarang. Bundan tashqari, siz hali ham bag ("np.loadtxt" ishlayotganidan so'ng)
qo'shib qo'ydi muallif Paul Panzer, manba
@Nekoso Afsuski, yo'g'on ichakni olib tashlashga harakat qiling.
qo'shib qo'ydi muallif Paul Panzer, manba
float (bit): ^ SyntaxError: noto'g'ri sintaksisi
qo'shib qo'ydi muallif Nekoso, manba
OK, yana bir marta sinab ko'rdim: ValueError: 7 satrda ustunlar soni noto'g'ri
qo'shib qo'ydi muallif Nekoso, manba
Mening .txt faylimda faqat 6 satr bor. Agar boshqasini qo'shsam, 8-satrda ustunlar soni noto'g'ri.
qo'shib qo'ydi muallif Nekoso, manba

Bu muammoni hal qilish kerak

data = np.genfromtxt("myfile.txt",skip_header = 1,dtype=None,)
data = [list(i) for i in data]
0
qo'shib qo'ydi

delimiter = '\ n' argumentidan o'tib ketmaslik kerak. loadtxt hujjatiga qarab, bu argument, chiziqlardagi chegaralarni emas, balki chiziqdagi qiymatlarni chegaralashni belgilaydi. ... va shu vazifani men uchun ishlagan dalilsiz chaqiradi.

0
qo'shib qo'ydi

delimiter = '\ n' argumentidan o'tib ketmaslik kerak. loadtxt hujjatiga qarab, bu argument, chiziqlardagi chegaralarni emas, balki chiziqdagi qiymatlarni chegaralashni belgilaydi. ... va shu vazifani men uchun ishlagan dalilsiz chaqiradi.

0
qo'shib qo'ydi
Python
Python
372 ishtirokchilar

Bu guruh python dasturlash tilini muhokama qilish uchun. Iltimos, o'zingizni hurmat qiling va faqat dasturlash bo'yicha yozing. Botlar mavzusini @botlarhaqida guruhida muhokama qling! FAQ: @PyFAQ Offtopic: @python_uz_offtopic

Python offtopic group !
Python offtopic group !
150 ishtirokchilar

@python_uz gruppasining offtop gruppasi. offtop bo'lsa ham reklama mumkin emas ) Boshqa dasturlash tiliga oid gruppalar @languages_programming