python - 交换numpy数组的维度

标签 python arrays optimization numpy dimensions

我想做以下事情:

for i in dimension1:
  for j in dimension2:
    for k in dimension3:
      for l in dimension4:
        B[k,l,i,j] = A[i,j,k,l]

不使用循环。最后 A 和 B 都包含相同的信息但被索引 不同。

我必须指出,维度 1、2、3 和 4 可以相同或不同。所以 numpy.reshape() 似乎很困难。

最佳答案

在 numpy 中执行此操作的规范方法是使用 np.transpose的可选排列参数。在您的情况下,从 ijklklij,排列是 (2, 3, 0, 1),例如:

In [16]: a = np.empty((2, 3, 4, 5))

In [17]: b = np.transpose(a, (2, 3, 0, 1))

In [18]: b.shape
Out[18]: (4, 5, 2, 3)

关于python - 交换numpy数组的维度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23943379/

相关文章:

python - 用 sk-learn 分类 : handle missing categorical features at prediction

ios - Swift - 使用 NSKeyedArchiver 保存用户数据,在转换为 NSArray 时出错

java - Android - 快速有效地清理字符数组

optimization - 随机爬山与首选爬山算法

python - 从 'train model from_config' 导入 'deeppavlov.core.commands.train' 时出错

Python3 pandas 数据框使用 fillna(方法 ='bfill')和分组依据

python - 如何使用 scapy 计算捕获的数据包大小

arrays - Swift Array.contains() 不调用 PFUser 子类的 Equatable 函数

mongodb - 在 mongodb 中删除重复文档的最快方法

mysql - (按位)MySQL 中的超集和子集