簡體   English   中英

如何在 numpy 中重新排列 ndarray 中的列

[英]How to rearrange columns in an ndarray in numpy

我偶然發現了我認為 numpy 的奇怪(或至少不直觀)行為,我想了解它為什么會這樣。 讓我們生成一個形狀為 (4, 3, 3) 的通用數組。

import numpy as np
arr = np.arange(4*3*3).reshape((4, 3, 3))

將 arr 視為四個 3×3 矩陣的列表,我現在想交換列表中第一個矩陣的前兩列。 我可以使用索引列表重新排序列:

idx = np.array([1, 0, 2])
m = arr[0]
m[:, idx]
>>> array([[1, 0, 2],
           [4, 3, 5],
           [7, 6, 8]])

我看到我成功交換了兩列。 但是,如果我嘗試直接用 arr 做同樣的事情,我會得到:

arr[0, :, idx]
>>> array([[1, 4, 7],
           [0, 3, 6],
           [2, 5, 8]])

我想我做錯了什么,但我不明白這種行為。

這個奇怪的 output 是因為當你在做

m = arr[0]
m[:, idx]

然后 m 變成一個完全不同的“數組”,數據為“arr”,但是當你在做arr[0, :, arr]時, arr 是一個列表,其中包含 arrays

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM