1
+ import numpy as np
2
+
3
+ # https://numpy.org/doc/stable/reference/arrays.dtypes.html
4
+ # '?' boolean
5
+ # 'b' (signed) byte
6
+ # 'B' unsigned byte
7
+ # 'i' (signed) integer
8
+ # 'u' unsigned integer
9
+ # 'f' floating-point
10
+ # 'c' complex-floating point
11
+ # 'm' timedelta
12
+ # 'M' datetime
13
+ # 'O' (Python) objects
14
+ # 'S', 'a' zero-terminated bytes (not recommended)
15
+ # 'U' Unicode string
16
+ # 'V' raw data (void)
17
+
18
+ name_list = ['小明' ,'小華' ,'小菁' ,'小美' ,'小張' ,'John' ,'Mark' ,'Tom' ]
19
+ sex_list = ['boy' ,'boy' ,'girl' ,'girl' ,'boy' ,'boy' ,'boy' ,'boy' ]
20
+ weight_list = [67.5 ,75.3 ,50.1 ,45.5 ,80.8 ,90.4 ,78.4 ,70.7 ]
21
+ rank_list = [8 ,1 ,5 ,4 ,7 ,6 ,2 ,3 ]
22
+ myopia_list = [True ,True ,False ,False ,True ,True ,False ,False ]
23
+
24
+ # 將上列 list 依照['name', 'sex', 'weight', 'rank', 'myopia']順序擺入 array,並且資料型態順序擺入[Unicode,Unicode,float,int,boolean]
25
+ # dt=np.dtype('U, U, f, i, ?')
26
+ # dt=np.dtype({'names':(),'formats':()})
27
+ dt = np .dtype ({'names' :('name' , 'sex' , 'weight' , 'rank' , 'myopia' ),'formats' :('U5' , 'U5' , 'f' , 'i' , '?' )})
28
+ a = np .zeros (8 ,dtype = dt )
29
+ a ['name' ]= name_list
30
+ a ['sex' ]= sex_list
31
+ a ['weight' ]= weight_list
32
+ a ['rank' ]= rank_list
33
+ a ['myopia' ]= myopia_list
34
+ print (a )
35
+
36
+ # 呈上題,將 array 中體重(weight)數據集取出算出全部平均體重
37
+ b = np .average (a ['weight' ])
38
+ print ('全部平均體重 %f' % b )
39
+
40
+ # 呈上題,進一步算出男生(sex 欄位是 boy)平均體重、女生(sex 欄位是 girl)平均體重
41
+ a_where = np .where (a ['sex' ]== 'boy' )
42
+ # print(a_where)
43
+ avBoy = np .average ( a [a_where ]['weight' ] )
44
+ print ('男生(sex 欄位是 boy)平均體重 %f' % avBoy )
45
+ b_where = np .where (a ['sex' ]== 'girl' )
46
+ # print(b_where)
47
+ avGirl = np .average ( a [b_where ]['weight' ] )
48
+ print ('女生(sex 欄位是 girl)平均體重 %f' % avGirl )
0 commit comments