首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Numpy ravel在三维中不还原meshgrid()

Numpy ravel在三维中不还原meshgrid()
EN

Stack Overflow用户
提问于 2022-09-19 23:19:06
回答 1查看 40关注 0票数 -1

我试图在代码中消除这些丑陋的for循环,但在使用np.meshgrid()和np.flatten()时无法恢复相同的行为。下面是一个很小的例子来说明这个问题:

代码语言:javascript
运行
复制
import numpy as np

a = np.arange(0,10)
b = np.arange(0,10)
c = np.arange(0,10)

mesh_tuple=np.meshgrid(*[a,b,c])
meshlist = []
for i in range(len(mesh_tuple)):
    meshlist.append(mesh_tuple[i].flatten())

meshlist = np.asarray(meshlist)

list0, list1, list2 = [], [], []
for i0, p0 in enumerate(a):
    for i1, p1 in enumerate(b):
        for i2, p2 in enumerate(c):
            list0.append(p0)
            list1.append(p1)
            list2.append(p2)

list0 = np.asarray(list0)
list1 = np.asarray(list1)
list2 = np.asarray(list2)

print(np.array_equal(list0, meshlist[0,:]))
print(np.array_equal(list1, meshlist[1,:]))
print(np.array_equal(list2, meshlist[2,:]))

print(np.array_equal(list0, meshlist[1,:]))
print(np.array_equal(list1, meshlist[0,:]))
print(np.array_equal(list2, meshlist[2,:]))

而这个回报是:

代码语言:javascript
运行
复制
False
False
True
True
True
True

当然,我可以交换前两个指数,但这只会解决3维的问题。有人知道如何把这个推广到N维吗?

谢谢,

EN

回答 1

Stack Overflow用户

发布于 2022-09-20 00:13:15

mesh_tuple=np.meshgrid(*[a,b,c], indexing='ij')

出于不明显的原因,meshgrid在生成索引时交换前两个数组。indexing='ij'告诉它做你想做的事。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73780148

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档