原始问题
(正在寻求将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))
答案 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')