我有这样的数据:
t = tf.constant(np.array([[[1,2],[3,4]],[[5,6],[7,8]]]))
# I want to extract h = [[1,2],[7,8]]
我需要把它做成这个“形状”:
[[[1, 2, 3]
[4, 5, 6]]
[[7, 8, 9]
[0, 1, 2]]]
到目前为止,我最好的方法是:
[[[1, 4], [2, 5], [3, 6]]
[[7, 0], [8, 1], [9, 2]]]
产生:
for i in range(2):
pairs = tuple(
array[i, :, j] for j in range(3) # ---axis-2-length---
)
print(pairs)
虽然这可以完成工作,但是要解释很多Python,尤其是随着这些数据集的增长。因此,我想知道是否可以通过花哨的索引或换位来完成此操作,或者我的numpy-fu还不够强大,无法想象自己。
有人知道如何用numpy更好地完成这项工作吗?
答案 0 :(得分:4)
使用ndarray.transpose
进行换位将在这里起作用。
>>> x.transpose(0, 2, 1)
array([[[1, 4],
[2, 5],
[3, 6]],
[[7, 0],
[8, 1],
[9, 2]]])