假设一个数组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