【问题标题】:how to change the order inside channel in a 4D array in numpy如何在numpy的4D数组中更改通道内的顺序
【发布时间】:2020-08-21 15:26:32
【问题描述】:

我有一个形状为TxCxHxW 的数组,如何更改通道内的顺序。

例如,我有a 并且想更改它,所以我得到b 如下(请注意,这只是一个示例,一般来说,我正在寻找一种快速更改内部顺序的方法频道,顺序的变化是不是随机的,我们总是有模式):

a = np.arange(48).reshape(4,3,2,2)
b = np.zeros_like(a)
b[0,:,:,:] =a[1,:,:,:]
b[1,:,:,:] =a[3,:,:,:]
b[2,:,:,:] =a[0,:,:,:]
b[3,:,:,:] =a[2,:,:,:]

【问题讨论】:

  • 您想如何更改订单。如果你想随机洗牌,你可以使用 np.random.shuffle 或其他方式是创建一个一维 np 索引数组,然后执行 b = a[required_indices_arr]
  • 这不是随机的,我总是有一个模式。你能说一下我的例子你怎么做吗?
  • 那么,对于具有 n 个元素的一般情况,模式是什么?
  • 假设模式是我在示例中展示的

标签: arrays python-3.x numpy


【解决方案1】:

要获得与您的代码相同的结果,您可以执行以下操作:

a = np.arange(48).reshape(4,3,2,2)
b = a[[1,3,0,2], :, :]

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2019-03-02
  • 1970-01-01
  • 1970-01-01
  • 2016-04-08
  • 2017-07-16
  • 1970-01-01
  • 1970-01-01
  • 2019-02-13
相关资源
最近更新 更多