【发布时间】:2014-10-10 19:34:19
【问题描述】:
我正在尝试将二阶张量转换为二元三阶张量。给定一个二阶张量作为 m x n numpy 数组:A,我需要取 A 中的每个元素值:x,并将其替换为向量:v,其维度等于 A 的最大值,但值 1 递增在对应于值 x 的 v 的索引处(即 v[x] = 1)。我一直在关注这个问题:Increment given indices in a matrix,它解决了生成一个数组,该数组在二维坐标给出的索引处具有增量。我一直在阅读答案并尝试使用 np.ravel_multi_index() 和 np.bincount() 来做同样的事情,但使用 3 维坐标,但是我不断收到 ValueError:“坐标数组中的无效条目”。这是我一直在使用的:
def expand_to_tensor_3(array):
(x, y) = array.shape
(a, b) = np.indices((x, y))
a = a.reshape(x*y)
b = b.reshape(x*y)
tensor_3 = np.bincount(np.ravel_multi_index((a, b, array.reshape(x*y)), (x, y, np.amax(array))))
return tensor_3
如果您知道这里出了什么问题或者知道更好的方法来实现我的目标,那么两者都会非常有帮助,谢谢。
【问题讨论】:
-
请显示示例输入和所需的输出。