Python Numpy 根据二维数组的值为三维数组赋值



假设一个数组A,其形状为(2,3),值在0, 1, 2, 3

形状为(2, 3, 4)的另一阵列B

目标:根据A的位置和值在B中添加1而不使用循环。也许是数字。在这里?有可能吗?

示例:

A = [[0, 1, 3],[2, 1, 0]]

B = np.zeros((2, 3, 4))

我正在寻求帮助

B = [[[1, 0, 0, 0]
[0, 1, 0, 0]
[0, 0, 0, 1]]
[[0, 0, 1, 0]
[0, 1, 0, 0]
[1, 0, 0, 0]]]

此外,如果A中的值是Nah,会发生什么。我们能什么都不做吗?

查看此代码:

方法-1

B[0,[0,1,2], A[0]] = 1
B[1,[0,1,2], A[1]] = 1

方法-2

import numpy as np
A = [[0, 1, 3],[2, 1, 0]]
B = np.zeros((2, 3, 4))
for i,j in zip(range(len(A)),A):
for k,l in zip(range(len(j)),j):
B[i][k][l] = 1
print(B) 

我有个主意。

一个热编码。

numpy.eye(4)[A]

使得CCD_ 13具有与CCD_ 14相同的形状。

A + B 

相关内容

  • 没有找到相关文章

最新更新