Ինչպե՞ս ճնշել գիտական նշումների օգտագործումը փոքր թվերի համար՝ օգտագործելով 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 զանգվածները ցուցադրելու առանց գիտական նշումների՝ կախված ձեր հատուկ պահանջներից և նախասիրություններից:

Հասկանալով յուրաքանչյուր մեթոդի առավելություններն ու թերությունները, դուք կարող եք ընտրել ամենահարմար մոտեցումը ձեր կոնկրետ կարիքների համար: