Python学习笔记:np.ogrid、np.mgrid产生多维数组

python

np.ogridnp.mgrid 函数相似,都是返回一个多维的 meshgrid, 区别是 ogrid 返回开放式,mgrid 返回密集式数组。

而数组中的元素依据 arange 方法来产生。

  • 参数部分需要传入一个列表,例如:[a, b, step] ( a 表示起点,b 表示终点,step 表示步长,步长参数缺省默认为1)

一、ogrid函数

np.ogrid 函数作为产生 numpy 数组与 arange 函数有点类似,不同的是:

  • arange 产生一维数组,ogrid 产生二维数组
  • arange 产生一个数组,ogrid 产生两个数组
  • ogrid 产生的数组,第一个数组是纵向产生的,即数组第二维大小始终是1。第二个数组是横向产生的,即数组的第一维大小始终是1。

1.整数步长

整数步长直接生成2个数组。

python">x, y = np.ogrid[0:10:1, 0:10:2] # 步长分别为1、2

print(x)

print(y)

'''

[[0]

[1]

[2]

[3]

[4]

[5]

[6]

[7]

[8]

[9]] (10, 1)

[[0 2 4 6 8]] (1, 5)

'''

2.复数步长

复数步长的设置是通过 j 进行设置的,如:5j,表示的是,用几个数值来等分整个区间。

x, y = np.ogrid[0:10:6j, 0:10:4j]

print(x, np.shape(x))

print(y, np.shape(y))

'''

[[ 0.]

[ 2.]

[ 4.]

[ 6.]

[ 8.]

[10.]] (6, 1)

[[ 0. 3.33333333 6.66666667 10. ]] (1, 4)

'''

二、mgrid函数

np.mgrid 函数最终返回两个数组,维度都是 n * m, 生成的第一个数组是依照列表中第一个元素生成,对列进行扩展重复;另外一个数组是根据列表中第二个元素生成,对行进行扩展重复。

np.mgrid[1:20:5, 0:8:1]

'''

array([[[ 1, 1, 1, 1, 1, 1, 1, 1],

[ 6, 6, 6, 6, 6, 6, 6, 6],

[11, 11, 11, 11, 11, 11, 11, 11],

[16, 16, 16, 16, 16, 16, 16, 16]],

[[ 0, 1, 2, 3, 4, 5, 6, 7],

[ 0, 1, 2, 3, 4, 5, 6, 7],

[ 0, 1, 2, 3, 4, 5, 6, 7],

[ 0, 1, 2, 3, 4, 5, 6, 7]]])

'''

应用对比

x, y = np.ogrid[:3, :4]

np.where(x < y, x, y+10)

'''

array([[10, 0, 0, 0],

[10, 11, 1, 1],

[10, 11, 12, 2]])

'''

参考链接:numpy的ogrid详细介绍

参考链接:np.ogrid 用法

以上是 Python学习笔记:np.ogrid、np.mgrid产生多维数组 的全部内容, 来源链接: utcz.com/z/389155.html

回到顶部