Ինչպե՞ս ճնշել գիտական նշումների օգտագործումը փոքր թվերի համար՝ օգտագործելով NumPy-ը:
NumPy զանգվածների հետ աշխատելիս կարող եք հանդիպել գիտական նշումով ներկայացված փոքր թվերի: Չնայած այս կոմպակտ ներկայացումը ձեռնտու է, արժեքների վերծանումը կամ համեմատելը կարող է դժվար լինել: Այս ուղեցույցը ուսումնասիրում է չորս հստակ տեխնիկա՝ նվազեցնելու գիտական նշումների օգտագործումը NumPy զանգվածներում փոքր թվերի համար. numpy.vectorize-ի օգտագործումը լարերի ձևաչափման հետ մեկտեղ, օգտագործելով numpy.ndarray.round, լարերի ֆորմատավորումը և numpy.set_print ընտրանքների օգտագործումը: Օրինակները կպարզաբանեն այս մեթոդաբանությունները՝ քննարկելով դրական և բացասական կողմերը և ապահովելով յուրաքանչյուր մոտեցման համապարփակ ըմբռնում:
Մեթոդ 1. Numpy.vectorize-ի օգտագործումը տողերի ձևաչափմամբ
numpy.vectorize ֆունկցիան, երբ զուգակցվում է տողերի ֆորմատավորման հետ, կարող է ճնշել գիտական նշումը NumPy զանգվածներում: Այս մոտեցումը ձեռնտու է յուրաքանչյուր տարրի հատուկ ձևաչափում կիրառելու համար, ինչը հանգեցնում է ֆորմատավորված տողերի նոր զանգվածի:
Շարահյուսություն
formatted_array = numpy.vectorize('{:.Nf}'.format)(array)
Այստեղ N-ը նշանակում է տասնորդական տեղերը, որոնք պետք է պահպանվեն, իսկ «{:.Nf}»-ը ներկայացնում է տողի ձևաչափման շարահյուսությունը N տասնորդական թվերով լողացող կետով թվերի համար: Numpy.vectorize ֆունկցիան կիրառում է տողի ֆորմատավորումը յուրաքանչյուր տարրի վրա:
Օրինակ
Հետևյալ օրինակում մենք կառուցում ենք NumPy զանգված փոքր թվերով և օգտագործում numpy.vectorize-ը տողերի ձևաչափմամբ՝ գիտական նշումը նվազեցնելու համար:
import numpy as np
array = np.array([1e-10, 2e-10, 3e-10])
formatted_array = np.vectorize('{:.10f}'.format)(array)
print(formatted_array)
Արդյունք
['0.0000000001' '0.0000000002' '0.0000000003']
Առավելությունները
-
Թույլ է տալիս յուրաքանչյուր տարրի հատուկ ձևաչափման հավելվածներ:
Հարմարելի է այլընտրանքային ձևաչափման պահանջներին:
Թերությունները
Արտադրում է տողերի զանգված, որը հարմար չէ հետագա թվային գործողությունների համար:
Մեթոդ 2. Օգտագործելով numpy.ndarray.round
numpy.ndarray.round ֆունկցիան հեշտացնում է NumPy զանգվածի տարրերի կլորացումը մինչև սահմանված տասնորդական թվերի քանակը՝ արդյունավետորեն նվազեցնելով գիտական նշումը: Այս մեթոդը օգտակար է ելքը որպես NumPy զանգված՝ թվային արժեքներով պահելու համար:
Շարահյուսություն
rounded_array = array.round(N)
Այստեղ N-ը ներկայացնում է տասնորդական թվերը, որոնք պետք է պահպանվեն: Կլոր ֆունկցիան յուրաքանչյուր տարրը կլորացնում է N տասնորդական թվերով:
Օրինակ
Հետագա օրինակում մենք ստեղծում ենք NumPy զանգված փոքր թվերով և օգտագործում numpy.ndarray.round գիտական նշումը նվազեցնելու համար:
import numpy as np
array = np.array([1e-10, 2e-10, 3e-10])
rounded_array = array.round(10)
print(rounded_array)
Արդյունք
[0.0000000001 0.0000000002 0.0000000003]
Առավելությունները
Պահպանում է ելքը որպես NumPy զանգված՝ թվային արժեքներով:
Հարմար է հետագա թվային գործողությունների համար:
Թերությունները
Անբավարար է լարերի ձևաչափման հատուկ պահանջների համար:
3. Օգտագործելով լարային ձևաչափում
Լարի ֆորմատավորումը հեշտացնում է NumPy զանգվածի յուրաքանչյուր տարրի ֆորմատավորումը՝ ճնշելով գիտական նշումը: Այս մեթոդոլոգիան հիշեցնում է numpy.vectorize-ի օգտագործումը տողերի ֆորմատավորումով, բայց օգտագործում է ցուցակի ընկալում:
Շարահյուսություն
formatted_array = ['{:.Nf}'.format(x) for x in array]
Այստեղ N-ը նշանակում է տասնորդական թվեր, որոնք պետք է պահպանվեն, իսկ «{:.Nf}»-ը ներկայացնում է տողի ձևաչափման շարահյուսությունը N տասնորդական թվերով լողացող կետով թվերի համար: Ցանկի ընկալումը կիրառում է տողերի ձևաչափումը յուրաքանչյուր տարրի վրա:
Օրինակ
Հետագա օրինակում մենք ստեղծում ենք NumPy զանգված՝ փոքր թվերով և լծակների ֆորմատավորումով՝ գիտական նշումը նվազեցնելու համար:
import numpy as np
array = np.array([1e-10, 2e-10, 3e-10])
formatted_array = ['{:.10f}'.format(x) for x in array]
print(formatted_array)
Արդյունք
['0.0000000001', '0.0000000002', '0.0000000003']
Առավելությունները
Թույլ է տալիս յուրաքանչյուր տարրի հատուկ ձևաչափման հավելվածներ:
Հարմարելի է այլընտրանքային ձևաչափման պահանջներին:
Թերությունները
Արտադրում է տողերի ցանկ, որոնք հարմար չեն հետագա թվային գործողությունների համար:
Մեթոդ 4. Օգտագործելով numpy.set_printoptions
numpy.set_printoptions ֆունկցիան հեշտացնում է NumPy զանգվածների տպման գլոբալ տարբերակների կարգավորումը, ներառյալ գիտական նշումների կրճատումը: Այս մոտեցումը ձեռնտու է ձեր կոդի բոլոր NumPy զանգվածների համար լռելյայն տպագրական վարքագիծը փոփոխելու համար:
Շարահյուսություն
np.set_printoptions(suppress=True, precision=N)
Այստեղ suppress=True-ն անջատում է գիտական նշումը, իսկ precision=N-ը սահմանում է տասնորդական տեղերը, որոնք պետք է պահպանվեն:
Օրինակ
Հետագա օրինակում մենք ստեղծում ենք NumPy զանգված՝ փոքր թվերով և օգտագործում numpy.set_printoptions՝ գիտական նշումը նվազեցնելու համար:
import numpy as np
np.set_printoptions(suppress=True, precision=10)
array = np.array([1e-10, 2e-10, 3e-10])
print(array)
Արդյունք
[0.0000000001 0.0000000002 0.0000000003]
Առավելությունները
Փոխում է ձեր կոդի բոլոր NumPy զանգվածների տպագրության լռելյայն վարքը:
Արդյունքը մնում է NumPy զանգված՝ թվային արժեքներով, որը հարմար է հետագա թվային գործողությունների համար:
Թերությունները
Ազդում է ձեր կոդի բոլոր NumPy զանգվածների վրա, որոնք պոտենցիալ անցանկալի են կոնկրետ դեպքերում:
Կարող է հարմար չլինել, եթե ելքի համար պահանջվում է հատուկ լարային ձևաչափում:
Եզրակացություն
Այս ուղեցույցում մենք ուսումնասիրեցինք, թե ինչպես կարելի է նվազեցնել գիտական նշումների օգտագործումը NumPy զանգվածներում փոքր թվերի համար՝ օգտագործելով տարբեր տեխնիկա: Մենք ուսումնասիրեցինք «numpy.vectorize»-ի օգտագործումը տողերի ֆորմատավորումով, օգտագործելով «numpy.ndarray.round»-ը, օգտագործեցինք լարերի ձևաչափումը և օգտագործեցինք «numpy.set_printoptions»-ը: Յուրաքանչյուր մեթոդ առաջարկում է պարզ և արդյունավետ միջոց NumPy զանգվածները ցուցադրելու առանց գիտական նշումների՝ կախված ձեր հատուկ պահանջներից և նախասիրություններից:
Հասկանալով յուրաքանչյուր մեթոդի առավելություններն ու թերությունները, դուք կարող եք ընտրել ամենահարմար մոտեցումը ձեր կոնկրետ կարիքների համար: