N維陣列 3 ndarray運算

2021-10-23 22:37:03 字數 3689 閱讀 5653

import numpy as np
# 生成10名同學,5門功課的資料

score = np.random.randint(40,

100,[10

,5])

score

array([[98, 47, 44, 77, 43],

[46, 78, 52, 54, 87],

[64, 78, 67, 75, 59],

[59, 72, 78, 59, 50],

[92, 55, 56, 81, 84],

[54, 94, 41, 72, 48],

[96, 40, 67, 57, 71],

[69, 42, 88, 52, 95],

[74, 85, 98, 64, 71],

[68, 62, 47, 96, 75]])

# 取出最後4名同學的成績,用於邏輯判斷

test_score=score[6:

,:]test_score

array([[69, 60, 85, 58, 95],

[44, 45, 52, 52, 81],

[56, 43, 81, 99, 96],

[97, 51, 64, 99, 95]])

# 邏輯判斷, 如果成績大於60就標記為true 否則為false

test_score>

60

array([[false, false,  true,  true,  true],

[ true, false, true, true, false],

[ true, true, true, true, true],

[false, false, true, true, false]])

# bool賦值, 將滿足條件的設定為指定的值-布林索引

test_score[test_score >60]

=1test_score

array([[ 1, 60,  1, 58,  1],

[44, 45, 52, 52, 1],

[56, 43, 1, 1, 1],

[ 1, 51, 1, 1, 1]])

# np.all() 全,都

# np.any() 任意乙個

# 判斷前兩名同學的成績[0:2, :]是否全及格

np.all

(score[0:

2,:]

>

60)

false
# 判斷前兩名同學的成績[0:2, :]是否有大於90分的

np.any

(score[0:

2,:]

>

90)

true
# 通過使用np.where能夠進行更加複雜的運算
# 判斷前四名學生,前四門課程中,成績中大於60的置為1,否則為0

tem = score[0:

4,0:

4]np.where(tem >60,

1,0)

array([[1, 0, 1, 1],

[1, 1, 1, 1],

[1, 1, 1, 0],

[1, 1, 1, 0]])

# 復合邏輯需要結合np.logical_and和np.logical_or使用

# 判斷前四名學生,前四門課程中,成績中大於60且小於90的換為1,否則為0

np.where(np.logical_and(tem >

60, tem <90)

,1,0

)

array([[0, 0, 0, 1],

[0, 1, 0, 0],

[1, 1, 1, 1],

[0, 1, 1, 0]])

# 判斷前四名學生,前四門課程中,成績中大於90或小於60的換為1,否則為0

np.where(np.logical_or(tem <

60, tem >90)

,1,0

)

array([[1, 1, 1, 0],

[1, 0, 1, 1],

[0, 0, 0, 0],

[1, 0, 0, 1]])

# np.max(資料,值)

# np.min()

# np.media()中位數

# np.mean()平均值

# np.std()標準差

# np.var()方差

# np.argmax() 最大值對應的下標

# np.argmin() 最小值對應的下標

# 進行統計的時候,axis 軸的取值並不一定

# numpy中不同的api軸的值都不一樣,在這裡,axis 0代表列, axis 1代表行去進行統計

# 接下來對於前四名學生,進行一些統計運算

temp = score[:4

,:]print

("前四名學生,各科成績的最高分:{}"

.format

(np.

max(temp, axis=0)

))print

("前四名學生,各科成績的最低分:{}"

.format

(np.

min(temp, axis=0)

))print

("前四名學生,各科成績波動情況:{}"

.format

(np.std(temp, axis=0)

))print

("前四名學生,各科成績的平均分:{}"

.format

(np.mean(temp, axis=0)

))temp

前四名學生,各科成績的最高分:[98 78 78 77 87]

前四名學生,各科成績的最低分:[46 47 44 54 43]

前四名學生,各科成績波動情況:[19.20123694 12.79404158 13.16007219 9.93415824 16.7238602 ]

前四名學生,各科成績的平均分:[66.75 68.75 60.25 66.25 59.75]

array([[98, 47, 44, 77, 43],

[46, 78, 52, 54, 87],

[64, 78, 67, 75, 59],

[59, 72, 78, 59, 50]])

print

("前四名學生,各科成績最高分對應的下標:{}"

.format

(np.argmax(temp, axis=0)

))

前四名學生,各科成績最高分對應的下標:[0 1 3 0 1]

N維陣列 1 ndarray介紹

import numpy as np import random import timescore np.array 80,89,86,67,79 78,97,89,67,81 90,94,78,67,74 91,91,90,67,69 76,87,75,67,86 70,79,84,67,84 9...

N維陣列 4 陣列運算

import numpy as nparr np.array 1,2,3,2,1,4 5,6,1,2,3,1 arr 1arr 2array 0.5,1.1.5,1.0.5,2.2.5,3.0.5,1.1.5,0.5 可以對比python列表的運算,看出區別 a 1,2,3,4,5 a 3 1,2,...

運算及一維陣列

常見的運算子 整除 a 1 2 a 0 取餘 a 1 2 a 1 2 賦值 a 1 a a 1 a 2 a 2 a 2 a 在變數後面表示先賦值,後運算 a 在變數後面表示先運算,後賦值 a b?a b 判斷a b,如果為真,輸出啊a,如果為假,輸出b define add a,b a b 巨集定義...