【发布时间】:2017-08-24 09:08:32
【问题描述】:
给定一个数组:
arr = np.array([[1, 3, 7], [4, 9, 8]]); arr
array([[1, 3, 7],
[4, 9, 8]])
并给出它的索引:
np.indices(arr.shape)
array([[[0, 0, 0],
[1, 1, 1]],
[[0, 1, 2],
[0, 1, 2]]])
我怎样才能将它们整齐地堆叠在一起以形成一个新的二维阵列?这就是我想要的:
array([[0, 0, 1],
[0, 1, 3],
[0, 2, 7],
[1, 0, 4],
[1, 1, 9],
[1, 2, 8]])
这是我目前的解决方案:
def foo(arr):
return np.hstack((np.indices(arr.shape).reshape(2, arr.size).T, arr.reshape(-1, 1)))
它有效,但是执行此操作是否有更短/更优雅的方法?
【问题讨论】:
-
如果数组是与 np.intp 不同的数据类型会发生什么?输出应该是什么类型?
-
@Eric 啊,我明白你的意思了。如果数组是浮点数,我认为可以将索引转换为浮点数。