2017-03-14 10 views
0

0と1だけの2次元配列を取り、各列に1の割合を与える配列を返します(axis = 0の場合)、またはcalc_frac(a、axis = 0)各行に(軸= 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) 

は私が持っている問題でてきたものである:[2] 0.6667としての代わりに、あなたはそれがBを示し、すべての変異後にbを印刷する場合は

  1. 0.333。 カラムには数字のコピーが1つだけある必要があります。

  2. このコードを上記の質問の形式の関数としてどのように書き換えることができるかわかりません。

  3. 私はnumpyに慣れていないので、forループを使わずに同じ機能をするコードを書く方法があるのだろうかと思っていました。

事前に感謝

答えて

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

キーはとゼロの配列の平均がの1の割合であるということです。