蟒蛇;将Matrix转换为二值化版本(以2为基础)

时间:2018-10-18 10:53:52

标签: python math

原始问题

(正在寻求将Matrix中的整数转换为base = 2的二值化版本的函数的帮助。

我尝试使用numpy.binary_repr,但是它不适用于矩阵。

有任何建议/功能吗?

谢谢)

修正的问题

这里的目的是创建

-500x50 2D数组/以前称为矩阵。在-1和+1之间随机

-将其归一化为0到1

-乘以1000并四舍五入

-通过获取生成的2D数组的基数为2来固定其二值化     大小为10位

到目前为止的

下面的代码

import numpy as np

np.random.seed(seed=1)
Weights = np.random.uniform(low=-1.0, high=1.0, size=500*50)

Weights = reshape(Weights,(500,50)) 


print(Weights.shape)

#Normalise the Weights
from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
Weights_Norm = scaler.fit_transform(Weights)
#print(Weights_Norm)

#Multiply by 1000 to get integers below 1000
Weights_Norm_1000=Weights_Norm*1000
#print(Weights_Norm_1000)

Weights_Norm_1000R= matrix.round(Weights_Norm_1000,0)
print(Weights_Norm_1000R)

Weight_int=Weights_Norm_1000R.astype(int)

x = np.array(Weight_int)
print(np.array([np.binary_repr(a) for b in x for a in b]).reshape(x.shape))

1 个答案:

答案 0 :(得分:1)

假设您有一个numpy矩阵x,则可以尝试:

np.array([np.binary_repr(a) for b in x for a in b]).reshape(x.shape)

例如:

将numpy导入为np

x = np.array([[1,2,3],[4,5,6]])
np.array([np.binary_repr(a) for b in x for a in b]).reshape(x.shape)
#array([['1', '10', '11'],
#       ['100', '101', '110']], dtype='<U3')