【问题标题】:Flip 3D numpy Array翻转 3D numpy 数组
【发布时间】:2017-01-14 10:31:16
【问题描述】:

我需要沿 Z 轴翻转 3D 数组 A 形 [m, n, k]。 我需要平面 0 (A[0,:,:]) 变成 k-1,平面 1 变成 k-2 平面等等。

我需要在很多数组上这样做,而且循环非常慢。

我试过了:

C = numpy.rot90(A,2)
C = flipud(A)
C = A[::-1]

我也尝试了 rol 和 reshape,但不是我需要的。

例如: A 是 (3, 2, 2)

    A= np.array([[[ 1.01551435, -0.76494131],
 [ 0.56853752 , 1.94491724]],
[[-0.97433012 , 2.08134198],
 [-1.34997602 ,-0.33543117]],
[[ 0.54217072, -1.33470658],
 [-0.50179028, -0.66593918]]])

我需要将 Z 轴倒置重新排序:

[[ 0.54217072 -1.33470658]
 [-0.50179028 -0.66593918]]
[[-0.7703279   0.02402204]
 [-0.18006451 -0.37589744]]
[[ 1.01551435 -0.76494131]
 [ 0.56853752  1.94491724]]

有什么想法吗?

【问题讨论】:

  • 举个小例子,比如说一个 2x3x4 数组,以及你想要的。还要指出您尝试的方法有什么问题。我猜A[:, :, ::-1] 会成功的。
  • @hpaulj 的建议是一个很好的尝试... a = np.arange(2*3*4).reshape(2,3,4) 然后使用他的重新排列来明确如果这是你想要的。
  • 在问题中添加示例
  • @hpaulj 的建议解决了这个问题。谢谢

标签: arrays python-2.7 numpy multidimensional-array


【解决方案1】:

正如@hpaulj 建议的那样:

A = A[::-1, :, :]

print A.shape
print A

    (3L, 2L, 2L)

[[[ 0.54217072 -1.33470658]
  [-0.50179028 -0.66593918]]

 [[-0.97433012  2.08134198]
  [-1.34997602 -0.33543117]]

 [[ 1.01551435 -0.76494131]
  [ 0.56853752  1.94491724]]]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-29
    • 2020-07-21
    • 2017-03-10
    • 2020-08-18
    • 2017-07-27
    • 2019-10-31
    相关资源
    最近更新 更多