NumPy er et modul i Python som tillader multi-dimensionelle lister.
Sammenlignet med data typen “list” i Python er NumPy lister på mange måder mere efficiente, dvs.: … mere tidsparende kodning … hurtigere operationer … mindre hukommelse brugt … flere metoder og variabler som tillader operation med multi-dimensionelle lister
Her følger en hurtig introduktion til lister i NumPy.
# import af NumPy import numpy as np # oprettelse af en NumPy liste med .array ; her med kun én dimension arr1 = np.array([2,3,4]) arr1
array([2, 3, 4])
# oprettelse af en NumPy Liste med .arange ; her med kun én dimension arr2 = np.arange(1,11,1) arr3 = np.arange(1,11,2) arr4 = np.arange(1,11,3) print(arr2) print("---") print(arr3) print("---") print(arr4) print("---")
[ 1 2 3 4 5 6 7 8 9 10] --- [1 3 5 7 9] --- [ 1 4 7 10] ---
# oprettelse af en liste med .linspace arr5 = np.linspace(0,10,3) arr6 = np.linspace(0,10,11) print(arr5) print("---") print(arr6) print("---")
[ 0. 5. 10.] --- [ 0. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.] ---
# .reshape metoden, her for at formatere en 1-D liste til en 2-D liste arr7 = np.array([1,2,3,4]) print(arr7) print("---") arr8 = arr7.reshape(2,2) # arr8 er arr7, men brudt op i to rækker og to spalter (dvs. en 2-D liste) print(arr8)
[1 2 3 4] --- [[1 2] [3 4]]
# NumPy objekter har en række instansvariabler; f.eks. .size, .shape, .dtype, .itemsize print(arr8.size) print(arr8.shape) print(arr8.dtype) print(arr8.itemsize)
4 (2, 2) int32 4
# i dette tilfælde var arr8 gemt som int32, dvs. 32 bit heltal; hvis f.eks. 16 bit er nok, kan jeg angive dette arr9 = np.array([1,2,3],dtype="int16") print(arr9) print(arr9.itemsize) print(arr9.dtype)
[1 2 3] 2 int16
# matematiske operationer og logiske tests kan udføres hvor alle elementer eller hele dimensioner på énn gang print("arr8: ---") print(arr8) print("arr8 < 2: ---") print(arr8 < 2) print("arr8 * 5 ---") print(arr8 * 5)
arr8: --- [[1 2] [3 4]] arr8 < 2: --- [[ True False] [False False]] arr8 * 5 --- [[ 5 10] [15 20]]
# med NumPy metoderne .zeros og .ones kan jeg oprette lister fyldt med 0 eller 1 print(np.zeros((3,3))) # formen skal angives med (), dvs. (3,3) betyder 3 rækker og 3 spalter print(np.ones((3,3)))
[[0. 0. 0.] [0. 0. 0.] [0. 0. 0.]] [[1. 1. 1.] [1. 1. 1.] [1. 1. 1.]]
# numpy ompfatter random pakken, som byder på en række metoder, f.eks. .random print(np.random.random((3,3)))
[[0.56983016 0.86417024 0.39347478] [0.88117104 0.63507185 0.11216017] [0.22805491 0.02687843 0.5127805 ]]
# random pakken omfatter også .shuffle arr10 = np.array([1,2,3,4,5]) np.random.shuffle(arr10) print(arr10)
[2 3 1 4 5]
# random pakken omfatter også .choice metoden np.random.choice(arr10)
2
# random pakken omfatter også .random_sample print(np.random.random_sample(arr10.shape))
[0.41 0.03 0.79 0.07 0.29]
# random pakken omfatter også randint print(np.random.randint(-100,100,size=(2,2))) # size er her formen, dvs. her 2 rækker og 2 spalter
[[-51 84] [ 64 -69]]
# med NumPy kan man beregne en række statistiker arr11 = np.array([[1,2,3], [4,5,6]]) print("arr11: --- ") print(arr11) print("arr11.sum(): --- ") print(arr11.sum()) print("arr11.max(): --- ") print(arr11.max()) print("arr11.min(): --- ") print(arr11.min()) print("arr11.mean(): --- ") print(arr11.mean()) print("arr11.var(): --- ") print(arr11.var()) print("arr11.std(): --- ") print(arr11.std())
# I NumPy er det muligt at indstille præcisionen af talangivelser, med .set_printoptions np.set_printoptions(precision=2,suppress=True) arr12 = np.array([11.3333,12.6666]) print(arr12)
[11.33 12.67]
# men det gælder kun for listerne selv, ikke f.eks. statisiker eller operationer print(arr12.mean()) print(arr12[0]+arr12[1]/2)
11.99995 17.6666
# statistiker kan beregnes langs én dimension print("arr11.sum(axis=0): --- ") print(arr11.sum(axis=0)) print("arr11.sum(axis=1): --- ") print(arr11.sum(axis=1))
arr11.sum(axis=0): --- [5 7 9] arr11.sum(axis=1): --- [ 6 15]
# jeg kan udgive indholdet af NumPy lister på stort set samme måde som for standard Python lister print("arr11[0,0]: --- ") print(arr11[0,0]) print("arr11[0,1]: --- ") print(arr11[0,1]) print("arr11[0]: --- ") print(arr11[0]) print("arr11[1]: --- ") print(arr11[1]) print("arr11[:,0]: --- ") print(arr11[:,0]) print("arr11[0,1:3]: --- ") print(arr11[0,1:3])
arr11[0,0]: --- 1 arr11[0,1]: --- 2 arr11[0]: --- [1 2 3] arr11[1]: --- [4 5 6] arr11[:,0]: --- [1 4] arr11[0,1:3]: --- [2 3]
Derudover byder NumPy på ydereligere funktionalitet – dette er kun en kort introduktion.
Industriingeniør som gerne beskæftiger sig med optimering, simulation og matematisk modellering i R, SQL, VBA og Python
Leave a Reply