
138
5 章 疎行列を用いた分割表
Returns
戻り値
-------
out : array or sparse matrix, same type as input
The resulting array. Zero entries in the input remain as zero,
all other entries are multiplied by the log (base 2) of their
inverse.
入力と同じ型の配列、もしくは疎行列。結果の配列。入力配列がゼロの要素は
"""
ゼロのまま、それ以外の要素は値の逆数の
log
(底は
2
)を掛けた値になる。
out = arr_or_mat.copy()
if isinstance(out, sparse.spmatrix):
arr = out.data
else:
arr = out
nz = np.nonzero(arr)
arr[nz] *= -np.log2(arr[nz])
return out
では、正しく動くことを確認してみましょう。
a = np.array([0.25, 0.25, 0, 0.25, 0.25])
xlog1x(a)
array([ 0.5, 0.5, 0. , 0.5, 0.5])
mat = sparse.csr_matrix([[0.125, 0.125, 0.25, 0],
[0.125, 0.125, 0, 0.25]])
xlog1x(mat).A
array([[ ...