[英]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.