1
matrix
の各行または列の真の平均(行または列の平均値を計算するときにゼロ要素を数えない)を計算する関数を1つ書くだけです。私はそれがaxis
パラメータをそれぞれ1
または0
として使用して行ごとまたは列ごとの計算であるかどうかを制御しようとします。 I行(axis
= 1
)によって計算する場合 `` matrix [:、mask] `を` `matrix [mask、:]`に `0`と` 1`だけを使って入れ替える?
これ
は、eachPSM = np.ones([5,4])
eachPSM[0] = 0
eachPSM[2,2:4] = 5
print each PSM
> [[ 0. 0. 0. 0.]
[ 1. 1. 1. 1.]
[ 1. 1. 5. 5.]
[ 1. 1. 1. 1.]
[ 1. 1. 1. 1.]]
ans = true_mean(eachPSM,0)
print ans
> [ 1. 1. 2. 2.]
しかしながらバイカラム計算
def true_mean(matrix, axis):
countnonzero = (matrix!=0).sum(axis)
mask = countnonzero!=0
output_mat = np.zeros(matrix.T.shape[axis])
output_mat[mask] = matrix[:,mask].sum(axis)/countnonzero[mask] # line4
return output_mat
テスト機能の関数であり、変更する必要があるだけline4
〜
output_mat[mask] = matrix[mask,:].sum(axis)/countnonzero[mask]
ここで数字0
と1
のみを使用してmatrix[:,mask]
をmatrix[mask,:]
に反転する方法は?だから、私は行と列からの真の平均を計算するための関数を1つだけ持つことができます。
もっとも怠慢な(依然として速い)溶液は、行列[ ''に分岐if'あろう:, '' axis = 1'のための '' matrix [:、mask] 'を指定します。 – lebenlechzer