1、np.prod(a, axis=None, dtype=None, out=None, keepdims=False)
根据给定的轴计算矩阵元素的乘积。
空阵列的产物是元素1:
>>> np.prod([])
1.0
默认情况下,计算所有元素的乘积,即使输入数组是二维的:
In [3]: np.prod([[1.,2.],[3.,4.]])
Out[3]: 24.0
但是我们也可以指定要乘以的轴:
In [4]: np.prod([[1.,2.],[3.,4.]], axis=1)
Out[4]: array([ 2., 12.])
如果x的类型是无符号的,那么输出类型是无符号整数:
>>> x = np.array([1, 2, 3], dtype=np.uint8)
>>> np.prod(x).dtype == np.uint
True
如果x是有符号整数类型,那么输出类型是默认的有符号整数:
>>> x = np.array([1, 2, 3], dtype=np.int8)
>>> np.prod(x).dtype == int
True
2、np.indices
3、np.mgrid
扫描二维码关注公众号,回复:
3582181 查看本文章
z = np.mgrid[1:5, 1:3] x, y = z[0], z[1] print(x) print(y)
结果:
[[1 1]
[2 2]
[3 3]
[4 4]]
[[1 2]
[1 2]
[1 2]
[1 2]]
首先np.mgrid输出至少是一个三维的向量。
其中的元素,z[0],z[1]都是二维矩阵。
z[0]行数由np.mgrid第一个参数决定,上例为1:5,且为1 2 3 4,列数由1:3决定,利用广播机制填充。
z[1]列数由np.mgrid第二个参数决定,上例为1:3,且为1 2 ,行数由1:5决定,利用广播机制填充。
PS:z = np.mgrid[1:5:0.1, 1:3:0.1]
表示1:5切片间隔为0.1,1:3切片间隔为0.1
z = np.mgrid[1:5:4j, 1:3:3j]
表示1:5切片均匀取数,取4个,1:3切片均匀取数,取3个
实例:生成第一列为0,1;第二列为0,1,2的网格
a =np.mgrid[0:2,0:3]
b = a.T
c = b.reshape(-1,2)
print(a.shape)
print(a)
print(b.shape)
print(b)
print(c)
输出:
(2, 2, 3) [[[0 0 0] [1 1 1]] [[0 1 2] [0 1 2]]] (3, 2, 2) [[[0 0] [1 0]] [[0 1] [1 1]] [[0 2] [1 2]]] [[0 0] [1 0] [0 1] [1 1] [0 2] [1 2]]