pythonnumpy生成二进制流_python – numpy变换向量到二进制矩阵

该博客讨论了如何在Python中使用numpy将包含整数的向量转换为二进制矩阵。作者提出了一种通过设置特定索引值为1来填充零矩阵的方法,并在评论中更新了处理向量中0的情况。同时,对比了两种不同的实现方式,一种基于直接操作数组,另一种利用稀疏矩阵,展示了它们的效率和兼容性。
摘要由CSDN通过智能技术生成

我正在寻找一种干净的方法将整数向量转换为二进制值的二维数组,其中的数组对应于作为索引的向量值

v = np.array([1, 5, 3])

C = np.zeros((v.shape[0], v.max()))

我正在寻找的是将C转换成这样的方法:

array([[ 1., 0., 0., 0., 0.],

[ 0., 0., 0., 0., 1.],

[ 0., 0., 1., 0., 0.]])

我想出了这个:

C[np.arange(v.shape[0]), v.T-1] = 1

但我想知道是否有更少的冗长/更优雅的方法?

谢谢!

UPDATE

感谢您的意见!我的代码中有一个错误:如果v中有0,则会将1放入错误的位置(最后一列).相反,我必须扩展分类数据以包括0.

只要你专门处理稀疏矩阵,jrennie的答案对于大型向量来说是一个巨大的胜利.在我的情况下,我需要返回一个数组的兼容性,转换完全平衡了优势 – 请参阅两个解决方案:

def permute_array(vector):

permut = np.zeros((vector.shape[0], vector.max()+1))

permut[np.arange(vector.shape[0]), vector] = 1

return permut

def permute_matrix(vector):

indptr = range(vector.shape[0]+1)

ones = np.ones(vector.shape[0])

permut = sparse.c

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值