返回顶部
首页 > 资讯 > 后端开发 > Python >np.meshgrid中的indexing参数问题解决
  • 870
分享到

np.meshgrid中的indexing参数问题解决

np.meshgrid的indexing参数np.meshgridindexing 2023-03-13 11:03:38 870人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

目录二维meshgrid函数三维meshgrid函数特别说明meshgrid函数在二维空间中可以简单地理解为将x轴与y轴的每个位置的坐标关联起来形成了一个网格,我们知道空间中的点是由

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网格创建命令中,笛卡尔坐标系是默认的坐标系。

在这里插入图片描述

然而在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轴,我们在编程中通常很少使用的这种坐标系。但是它也有自己的优势,这里不进一步说明。

在这里插入图片描述

三维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]]]
"""

由上面的结果我们可以看到,此时的坐标轴对应如下图像:

在这里插入图片描述

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参数问题解决的文章就介绍到这了,更多相关np.meshgrid的indexing参数内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: np.meshgrid中的indexing参数问题解决

本文链接: https://lsjlt.com/news/199528.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • np.meshgrid中的indexing参数问题解决
    目录二维meshgrid函数三维meshgrid函数特别说明meshgrid函数在二维空间中可以简单地理解为将x轴与y轴的每个位置的坐标关联起来形成了一个网格,我们知道空间中的点是由...
    99+
    2023-03-13
    np.meshgrid的indexing参数 np.meshgrid indexing
  • np.meshgrid中的indexing参数问题如何解决
    这篇文章主要介绍“np.meshgrid中的indexing参数问题如何解决”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“np.meshgrid中的indexing参数问题如何解决”文章能帮助大家解...
    99+
    2023-07-05
  • 解决pygal.style的LightColorizedStyle参数问题
    目录pygal.style的LightColorizedStyle参数 问题解决方案解决思路pygal工具提示失效解决方案pygal.style的LightColorize...
    99+
    2024-04-02
  • jpa中query参数问题怎么解决
    在JPA中,可以使用以下几种方式解决query参数问题:1. 使用命名参数:在JPQL查询语句中使用命名参数,然后在创建Query对...
    99+
    2023-09-13
    jpa
  • 解决MyBatis中Enum字段参数解析问题
    目录基础Class和TypeHandler请求参数解析问题问题解决基础Class和TypeHandler MyBatis操作的基本User对象结构如下: @Data @Alia...
    99+
    2024-04-02
  • SpringMVC中参数绑定问题怎么解决
    这篇文章主要讲解了“SpringMVC中参数绑定问题怎么解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“SpringMVC中参数绑定问题怎么解决”吧!1. 参数绑定的过程我们可以回忆一下,...
    99+
    2023-06-29
  • docker中运行的JVM参数问题怎么解决
    这篇文章主要讲解了“docker中运行的JVM参数问题怎么解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“docker中运行的JVM参数问题怎么解决”吧!方法一、jcmd命令:jps获取j...
    99+
    2023-06-30
  • StretchDIBits函数参数问题怎么解决
    要解决StretchDIBits函数参数问题,可以考虑以下几种方法:1. 检查参数类型:确保传递给StretchDIBits函数的参...
    99+
    2023-08-19
    StretchDIBits
  • Lasagne中超参数调优问题怎么解决
    在调优Lasagne中的超参数时,可以采取以下方法: 网格搜索:通过尝试不同的超参数值组合,通过交叉验证或验证集来确定哪组参数能...
    99+
    2024-04-02
  • parfile解决exp时参数过多的问题
    parfile解决exp时参数过多的问题 转载▼ ...
    99+
    2024-04-02
  • PHP参数丢失问题的解决方案
    PHP参数丢失问题的解决方案 在开发PHP程序的过程中,经常会遇到参数丢失的问题,这可能是由于前端传递的参数不完整、后端接收参数的方式不正确等原因造成的。在本文中,我们将针对PHP参数...
    99+
    2024-03-11
    数据恢复 解析错误 参数处理 表单提交
  • URL中文参数乱码问题的PHP解决方案
    URL参数乱码问题一直是开发者面临的一个棘手问题,尤其是在处理中文参数时更为显著。在PHP编程中,如果URL中的中文参数出现乱码,不仅会影响用户体验,还可能导致程序出现异常行为。本文将...
    99+
    2024-04-02
  • 如何解决MyBatis中Enum字段参数解析问题
    小编给大家分享一下如何解决MyBatis中Enum字段参数解析问题,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!基础Class和TypeHandlerMyBati...
    99+
    2023-06-20
  • java参数乱码问题解决方法
    对于Post方式提交的数据,可以使用request.setCharacterEncoding("gb2312");来明确指定获取请求参数时使用编码。但是此种方式只对Post方式提交有效。request.setCharacterEncodin...
    99+
    2014-06-20
    java 乱码
  • 怎么解决oracle 19c sec_case_sensitive_logon参数问题
    这篇文章主要介绍“怎么解决oracle 19c sec_case_sensitive_logon参数问题”,在日常操作中,相信很多人在怎么解决oracle 19c sec_case_sensitive_lo...
    99+
    2024-04-02
  • Filter中获取传递参数方式(解决post请求参数问题)
    目录Filter中获取传递参数1.GET传递2.Post传递XyRequestWrapper类XySecurityFilterFilter中获取传递参数 1. GET 传递 参数可以...
    99+
    2024-04-02
  • php url 参数中文乱码问题怎么解决
    本教程操作环境:windows7系统、PHP8.1版、Dell G3电脑。php url 参数中文乱码问题怎么解决?PHP解决URL中文GBK乱码问题的两种方法一般情况下对URL进行UrlEncode 处理 , urlencode(),ur...
    99+
    2024-04-02
  • mybatis中Oracle参数为NULL错误问题及解决
    目录mybatis中Oracle参数为NULL错误问题1.公共配置方法2.参数配置方法mybatis oracle insert 属性为null保存报错 无效的列类型1111解决办法...
    99+
    2022-12-22
    mybatis Oracle Oracle参数为NULL错误 Oracle参数为NULL
  • C#中MeasureString参数不准确问题怎么解决
    在C#中,当使用`Graphics.MeasureString`方法测量字符串时,可能会出现参数不准确的问题。这可能是因为测量的字符...
    99+
    2023-08-08
    C# MeasureString
  • php url中文参数乱码问题如何解决
    这篇文章主要讲解了“php url中文参数乱码问题如何解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“php url中文参数乱码问题如何解决”吧!乱码问题的原因在 PHP 中处理中文参数时...
    99+
    2023-07-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作