2017-03-14 87 views
0

編寫一個函數calc_frac(a,axis = 0),該函數採用僅包含零和1的二維numpy數組,並返回一個數組,給出每列中的分數(如果axis = 0)或在每一行(如果axis = 1)。Numpy/Arrays函數

這是我迄今爲止

import numpy as np 
a = np.array([[1,0,1],[1,1,0],[0,1,0]]) 
b = np.zeros((3,1)) 
col_r1 = a[:,0:1] 
col_r2 = a[:,1:2] 
col_r3 = a[:,2:3] 
i=0 
j=0 
k=0 
for i in col_r1: 
    if i >= 1: 
     i = i+1 
     b[0]= i/3 

for k in col_r2: 
    if k >= 1: 
     k=k+1 
     b[1] = k/3 

for f in col_r3: 
    if f >= 1: 
     f=f+1 
     b[2] = f/3 
print(b) 
print(col_r3) 

這裏是我的問題:

  1. 如果打印B中的所有突變後,顯示B [2]爲0.6667,而不是0.333。 因爲列應該只有一個副本的號碼1

  2. 我不知道我怎麼能重寫這個代碼作爲一個函數在上面的問題中顯示的格式。

  3. 因爲我不熟悉numpy,我想知道是否有一種方法來編寫不使用for循環執行相同功能的代碼。

預先感謝

回答

1
def calc_frac(a, axis=0): 
    return a.mean(axis=axis) 

的關鍵是,一和零的陣列的平均值爲 1的的分數。