标签:__ python indexing fancy np ind import array numpy
背景
实现一维numpy数组
a = array([1,0,3])
转换为2维的 1-hot数组
b = array([[0,1,0,0], [1,0,0,0], [0,0,0,1]])
python实现示例代码
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)
结果展示
[[0. 1. 0. 0.]
[1. 0. 0. 0.]
[0. 0. 0. 1.]]
fancy indexing介绍
fancy indexing:传递索引数组来一次返回多个数组元素。
索引为一维数组
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])
结果展示:
[71 60 20]
索引为二维数组
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])
结果展示:
[[71 86]
[60 20]]
多个维度
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])
结果展示:
[ 2 5 11]
示例代码解释
上面示例代码相当于多个维度情况即:
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)
结果
[[0. 1. 0. 0.]
[1. 0. 0. 0.]
[0. 0. 0. 1.]]
标签:__,python,indexing,fancy,np,ind,import,array,numpy 来源: https://blog.csdn.net/qq_33873431/article/details/106669274
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。