首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将数组转换为二进制数组

将数组转换为二进制数组
EN

Stack Overflow用户
提问于 2019-05-31 05:47:17
回答 1查看 106关注 0票数 1

我目前有一个包含以下数据的numpy数组:

代码语言:javascript
复制
array([0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 0,
   1, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 0,
   0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0,
   1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 1, 1, 1,
   1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1,
   0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 1, 1,
   0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0])

我需要将其转换为如下所示的数组:

代码语言:javascript
复制
array([0., 1.],
      [0., 1.],
      [1., 0.],
      [1., 0.],
      [1., 0.],
      [0., 1.],
      [1., 0.],
      [1., 0.],
      [1., 0.],
      [1., 0.],
      ...
      [0., 1.])

我认识到第一步显然是转换成一个浮点数,但我不知道下一步从哪里开始。有没有地图功能可以很好的工作?一个lambda?一个for循环?我觉得如果我已经有了一个不同的数组格式,就会很简单,但是我不知道如何有条件地添加一个维数,然后用与已经存在的二进制相反的精确的二进制来填充它。所有这些都是基于if-then条件的吗?对不起,我是Python的新手,所以我还不知道所有的工具。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-31 07:12:32

您可以在适当的模板中使用高级索引:

代码语言:javascript
复制
small_example = np.array([1,0,0,1,1,1,0,1])
(1-np.eye(2))[small_example]
# array([[1., 0.],
#        [0., 1.],
#        [0., 1.],
#        [1., 0.],
#        [1., 0.],
#        [1., 0.],
#        [0., 1.],
#        [1., 0.]])

同样的想法也可以使用np.where实现

代码语言:javascript
复制
np.where(small_example[:,None], *np.eye(2))
# array([[1., 0.],
#        [0., 1.],
#        [0., 1.],
#        [1., 0.],
#        [1., 0.],
#        [1., 0.],
#        [0., 1.],
#        [1., 0.]])

更直接的方法展示了如何创建列和行向量,如何将它们一起广播以及如何强制转换dtype

代码语言:javascript
复制
(np.c_[small_example]^np.r_[:2]).astype(float)
# array([[1., 0.],
#        [0., 1.],
#        [0., 1.],
#        [1., 0.],
#        [1., 0.],
#        [1., 0.],
#        [0., 1.],
#        [1., 0.]])

我们还可以对输入及其“负”进行列堆栈;我们使用1.0来触发类型提升:

代码语言:javascript
复制
np.c_[small_example,1.0-small_example]
# array([[1., 0.],
#        [0., 1.],
#        [0., 1.],
#        [1., 0.],
#        [1., 0.],
#        [1., 0.],
#        [0., 1.],
#        [1., 0.]])
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56386036

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档