91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

np.meshgrid中的indexing參數問題如何解決

發布時間:2023-03-13 11:00:48 來源:億速云 閱讀:96 作者:iii 欄目:開發技術

這篇文章主要介紹“np.meshgrid中的indexing參數問題如何解決”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“np.meshgrid中的indexing參數問題如何解決”文章能幫助大家解決問題。

meshgrid函數在二維空間中可以簡單地理解為將x軸與y軸的每個位置的坐標關聯起來形成了一個網格,我們知道空間中的點是由坐標確定的,因此,當x與y關聯起來后,我們便可以給與某個點某個特定值并畫出對應的圖像。具體的可以百度一下,會有很多較為詳細的介紹。

這里我想要著重的說一下二維以及三維的meshgrid的參數indexing的問題。

二維meshgrid函數

import numpy as np


class Debug:
    def __init__(self):
        self.x = np.arange(5)
        self.y = np.arange(5)
        
    def grid(self):
        X, Y = np.meshgrid(self.x, self.y, indexing="xy")
        return X, Y
    

main = Debug()
X, Y = main.grid()
print("The X grid is:")
print(X)
print("The Y grid is:")
print(Y)
"""
The X grid is:
[[0 1 2 3 4]
 [0 1 2 3 4]
 [0 1 2 3 4]
 [0 1 2 3 4]
 [0 1 2 3 4]]
The Y grid is:
[[0 0 0 0 0]
 [1 1 1 1 1]
 [2 2 2 2 2]
 [3 3 3 3 3]
 [4 4 4 4 4]]
"""

從上面的結果可以看出,所獲取的網格對應如下圖所示,橫向為x軸,縱向為y軸,類似于我們在幾何空間中使用的坐標系, 我們通常稱之為笛卡爾坐標系(Cartesian coordinate)。在二維meshgrid網格創建命令中,笛卡爾坐標系是默認的坐標系。

np.meshgrid中的indexing參數問題如何解決

然而在python編程中,還有一種較為常用的indexing取法,代碼如下:

import numpy as np


class Debug:
    def __init__(self):
        self.x = np.arange(5)
        self.y = np.arange(5)
        
    def grid(self):
        X, Y = np.meshgrid(self.x, self.y, indexing="ij")
        return X, Y
    

main = Debug()
i, j = main.grid()
print("The i grid is:")
print(i)
print("The j grid is:")
print(j)
"""
The i grid is:
[[0 0 0 0 0]
 [1 1 1 1 1]
 [2 2 2 2 2]
 [3 3 3 3 3]
 [4 4 4 4 4]]
The j grid is:
[[0 1 2 3 4]
 [0 1 2 3 4]
 [0 1 2 3 4]
 [0 1 2 3 4]
 [0 1 2 3 4]]
"""

此時從上面的結果我們可以看出,所獲取的網格對應如下圖所示,縱向為i軸,橫向為j軸,我們在編程中通常很少使用的這種坐標系。但是它也有自己的優勢,這里不進一步說明。

np.meshgrid中的indexing參數問題如何解決

三維meshgrid函數

進一步我們討論三維的情況,代碼如下:

import numpy as np


class Debug:
    def __init__(self):
        self.x = np.arange(3)
        self.y = np.arange(3)
        self.z = np.arange(3)
        
    def grid(self):
        X, Y, Z = np.meshgrid(self.x, self.y, self.z)
        return X, Y, Z
    

main = Debug()
X, Y, Z = main.grid()
print("The X grid is:")
print(X)
print("The Y grid is:")
print(Y)
print("The Z grid is:")
print(Z)
"""
The X grid is:
[[[0 0 0]
  [1 1 1]
  [2 2 2]]

 [[0 0 0]
  [1 1 1]
  [2 2 2]]

 [[0 0 0]
  [1 1 1]
  [2 2 2]]]
The Y grid is:
[[[0 0 0]
  [0 0 0]
  [0 0 0]]

 [[1 1 1]
  [1 1 1]
  [1 1 1]]

 [[2 2 2]
  [2 2 2]
  [2 2 2]]]
The Z grid is:
[[[0 1 2]
  [0 1 2]
  [0 1 2]]

 [[0 1 2]
  [0 1 2]
  [0 1 2]]

 [[0 1 2]
  [0 1 2]
  [0 1 2]]]
"""

由上面的結果我們可以看到,此時的坐標軸對應如下圖像:

np.meshgrid中的indexing參數問題如何解決

x軸向下,y軸向屏幕內側,z軸向右側,在三維圖像中不再根據indexing值來區分坐標軸了,而是統一規定了坐標軸的取法,只有對于這個坐標軸的取法深入理解,才能在之后的三維數據處理中游刃有余。

特別說明

但是這里有一個問題,來看一組代碼:

class Debug:
    def __init__(self):
        x = np.array([[[0],
                       [2]], [[4],
                              [6]], [[8],
                                     [10]]])
        print(x.shape)


main = Debug()
"""
(3, 2, 1)
"""

我們可以看到,輸出結果為(3, 2, 1),即沿著x1個元素,沿著y2個元素,沿著z3個元素。再來看一下我們使用meshgrid方法生成三維網格的情況。

import numpy as np


class Debug:
    def __init__(self):
        self.x = np.arange(1)
        self.y = np.arange(2)
        self.z = np.arange(3)

    def grid(self):
        X, Y, Z = np.meshgrid(self.x, self.y, self.z)
        return X, Y, Z


main = Debug()
X, Y, Z = main.grid()
print("The X grid is:")
print(X.shape)
print("The Y grid is:")
print(Y.shape)
print("The Z grid is:")
print(Z.shape)
"""
The X grid is:
(2, 1, 3)
The Y grid is:
(2, 1, 3)
The Z grid is:
(2, 1, 3)
"""

我們可以看到,最終輸出的X,Y,Zshape均為(2, 1, 3),這對應的是沿著x3個元素,沿著y1個元素,沿著z2個元素。突然感覺有些混亂,不符合我們之前想要得到的x,y,z的排列順序,為了能夠得到正常的排列順序,我們可以使用如下代碼:

import numpy as np


class Debug:
    def __init__(self):
        self.x = np.arange(1)
        self.y = np.arange(2)
        self.z = np.arange(3)

    def grid(self):
        X, Y, Z = np.meshgrid(self.y, self.z, self.x)
        return X, Y, Z


main = Debug()
X, Y, Z = main.grid()
print("The X grid is:")
print(X.shape)
print("The Y grid is:")
print(Y.shape)
print("The Z grid is:")
print(Z.shape)
"""
The X grid is:
(3, 2, 1)
The Y grid is:
(3, 2, 1)
The Z grid is:
(3, 2, 1)
"""

可以看到運行后我們得到了符合Python默認坐標軸習慣的網格形式,這時對應的x軸向右側,y軸向下,z軸向屏幕里面。這個僅僅是為了理解需要,實際操作中無需進行這種坐標軸變換操作,直接使用默認的三維坐標軸方向即可。

關于“np.meshgrid中的indexing參數問題如何解決”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

漾濞| 成安县| 营口市| 从化市| 宁武县| 阿拉善右旗| 吉隆县| 固镇县| 渝中区| 黎川县| 扎鲁特旗| 贵德县| 麟游县| 金寨县| 城固县| 来凤县| 甘孜| 靖宇县| 青神县| 通化市| 淮南市| 南漳县| 策勒县| 图木舒克市| 靖宇县| 嘉荫县| 永泰县| 波密县| 镇巴县| 尚志市| 门头沟区| 铜陵市| 晋中市| 金寨县| 邻水| 芜湖县| 兴山县| 工布江达县| 武冈市| 京山县| 禄丰县|