前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python通过fancy indexing把数组转换为one hot编码的numpy array

python通过fancy indexing把数组转换为one hot编码的numpy array

作者头像
lovelife110
发布2021-01-14 16:19:58
1.4K0
发布2021-01-14 16:19:58
举报
文章被收录于专栏:爱生活爱编程

背景

实现一维numpy数组

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

转换为2维的 1-hot数组

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

python实现示例代码

代码语言:javascript
复制
import numpy as np

if __name__ == '__main__':
    ind = np.array([1, 0, 3])
    x = np.zeros((ind.size, ind.max() + 1))
    x[np.arange(ind.size), ind] = 1
	print(x)

结果展示

代码语言:javascript
复制
[[0. 1. 0. 0.]
 [1. 0. 0. 0.]
 [0. 0. 0. 1.]]

fancy indexing介绍

fancy indexing:传递索引数组来一次返回多个数组元素。

索引为一维数组

代码语言:javascript
复制
import numpy as np

if __name__ == '__main__':
	x = np.array([51, 92, 14, 71, 60, 20, 82, 86, 74, 74])
    ind = [3, 4, 5]
    print(x[ind])

结果展示:

代码语言:javascript
复制
[71 60 20]

索引为二维数组

代码语言:javascript
复制
import numpy as np

if __name__ == '__main__':
    x = np.array([51, 92, 14, 71, 60, 20, 82, 86, 74, 74])
    ind = np.array([[3, 7],
                    [4, 5]])
    print(x[ind])

结果展示:

代码语言:javascript
复制
[[71 86]
 [60 20]]

多个维度

代码语言:javascript
复制
import numpy as np

if __name__ == '__main__':
    x = np.array([[0, 1, 2, 3],
                  [4, 5, 6, 7],
                  [8, 9, 10, 11]])

    row = np.array([0, 1, 2])  # 行
    col = np.array([2, 1, 3])  # 列
    print(x[row, col])

结果展示:

代码语言:javascript
复制
[ 2  5 11]

示例代码解释

上面示例代码相当于多个维度情况即:

代码语言:javascript
复制
import numpy as np

if __name__ == '__main__':
    # ind = np.array([1, 0, 3])
    # x = np.zeros((ind.size, ind.max() + 1))
    # x[np.arange(ind.size), ind] = 1

    x = np.array([[0, 0, 0, 0],
                  [0, 0, 0, 0],
                  [0, 0, 0, 0]])

    row = np.array([0, 1, 2])
    col = np.array([1, 0, 3])
    x[row, col] = 1  # 相当于找好位置后,赋值为1
    print(x)

结果

代码语言:javascript
复制
[[0. 1. 0. 0.]
 [1. 0. 0. 0.]
 [0. 0. 0. 1.]]
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/06/10 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景
  • python实现示例代码
  • fancy indexing介绍
    • 索引为一维数组
      • 索引为二维数组
        • 多个维度
          • 示例代码解释
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档