Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将numpy开放网格转换为坐标_Python_Numpy - Fatal编程技术网

Python 将numpy开放网格转换为坐标

Python 将numpy开放网格转换为坐标,python,numpy,Python,Numpy,我想将numpy ix_uu例程返回的开放网格转换为坐标列表 例如,对于: In[1]: m = np.ix_([0, 2, 4], [1, 3]) In[2]: m Out[2]: (array([[0], [2], [4]]), array([[1, 3]])) 我想要的是: ([0, 1], [0, 3], [2, 1], [2, 3], [4, 1], [4, 3]) 我很确定我可以通过一些迭代、解包和压缩来破解它,但我确信一定有一种聪明的方法来实现

我想将numpy ix_uu例程返回的开放网格转换为坐标列表

例如,对于:

In[1]: m = np.ix_([0, 2, 4], [1, 3])
In[2]: m
Out[2]: 
(array([[0],
        [2],
        [4]]), array([[1, 3]]))
我想要的是:

([0, 1], [0, 3], [2, 1], [2, 3], [4, 1], [4, 3])
我很确定我可以通过一些迭代、解包和压缩来破解它,但我确信一定有一种聪明的方法来实现这一点……

方法#1使用然后堆叠-

r,c = np.meshgrid(*m)
out = np.column_stack((r.ravel('F'), c.ravel('F') ))

方法#2或者,使用
np.array()
然后进行
转置
重塑
-

np.array(np.meshgrid(*m)).T.reshape(-1,len(m))
对于
np.ix
中使用的数组的一般数量的一般情况,以下是所需的修改-

p = np.r_[2:0:-1,3:len(m)+1,0]
out = np.array(np.meshgrid(*m)).transpose(p).reshape(-1,len(m))
样本运行-

两种情况:

In [376]: m = np.ix_([0, 2, 4], [1, 3])

In [377]: p = np.r_[2:0:-1,3:len(m)+1,0]

In [378]: np.array(np.meshgrid(*m)).transpose(p).reshape(-1,len(m))
Out[378]: 
array([[0, 1],
       [0, 3],
       [2, 1],
       [2, 3],
       [4, 1],
       [4, 3]])
In [379]: m = np.ix_([0, 2, 4], [1, 3],[6,5,9])

In [380]: p = np.r_[2:0:-1,3:len(m)+1,0]

In [381]: np.array(np.meshgrid(*m)).transpose(p).reshape(-1,len(m))
Out[381]: 
array([[0, 1, 6],
       [0, 1, 5],
       [0, 1, 9],
       [0, 3, 6],
       [0, 3, 5],
       [0, 3, 9],
       [2, 1, 6],
       [2, 1, 5],
       [2, 1, 9],
       [2, 3, 6],
       [2, 3, 5],
       [2, 3, 9],
       [4, 1, 6],
       [4, 1, 5],
       [4, 1, 9],
       [4, 3, 6],
       [4, 3, 5],
       [4, 3, 9]])
三种情况:

In [376]: m = np.ix_([0, 2, 4], [1, 3])

In [377]: p = np.r_[2:0:-1,3:len(m)+1,0]

In [378]: np.array(np.meshgrid(*m)).transpose(p).reshape(-1,len(m))
Out[378]: 
array([[0, 1],
       [0, 3],
       [2, 1],
       [2, 3],
       [4, 1],
       [4, 3]])
In [379]: m = np.ix_([0, 2, 4], [1, 3],[6,5,9])

In [380]: p = np.r_[2:0:-1,3:len(m)+1,0]

In [381]: np.array(np.meshgrid(*m)).transpose(p).reshape(-1,len(m))
Out[381]: 
array([[0, 1, 6],
       [0, 1, 5],
       [0, 1, 9],
       [0, 3, 6],
       [0, 3, 5],
       [0, 3, 9],
       [2, 1, 6],
       [2, 1, 5],
       [2, 1, 9],
       [2, 3, 6],
       [2, 3, 5],
       [2, 3, 9],
       [4, 1, 6],
       [4, 1, 5],
       [4, 1, 9],
       [4, 3, 6],
       [4, 3, 5],
       [4, 3, 9]])