您的位置:

Numpy合并的用法

Numpy是Python中一个重要的科学计算库,该库包含了高性能的多维数组和矩阵计算的函数。其中,合并两个或多个数组是数组操作中最常见的操作之一。本文将介绍了多个方面的numpy合并的用法。

一、vstack和hstack

vstack可以将数组堆叠在垂直方向上,即沿着第一个轴添加元素,而hstack可以将数组堆叠在水平方向上,即沿着第二个轴添加元素。

import numpy as np

a = np.array([1,2,3])
b = np.array([4,5,6])
c = np.vstack((a,b))
print(c)

d = np.hstack((a,b))
print(d)

输出:

[[1 2 3]
 [4 5 6]]
[1 2 3 4 5 6]

在这个例子中,我们定义了两个一维数组a和b。我们使用了vstack将它们沿着垂直方向堆叠,并使用hstack将它们沿着水平方向堆叠。

二、concatenate

concatenate函数可以沿着任意轴连接两个或多个数组。

import numpy as np

a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6]])
c = np.concatenate((a, b), axis=0)
d = np.concatenate((a,b.T), axis=1)
print(c)
print(d)

输出:

[[1 2]
 [3 4]
 [5 6]]
[[1 2 5]
 [3 4 6]]

在这个例子中,我们定义了两个二维数组a和b。我们使用了concatenate将它们沿着轴0(行)连接,输出的形状为(3,2)。 接着,我们使用concatenate沿着轴1(列)连接,输出的形状为(2,3)。

三、stack

stack函数可以沿着新轴连接两个或多个数组,新轴的位置由参数axis指定。

import numpy as np

a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6], [7, 8]])
c = np.stack((a, b), axis=0)
d = np.stack((a, b), axis=1)
e = np.stack((a, b), axis=2)
print(c)
print(d)
print(e)

输出:

[[[1 2]
  [3 4]]

 [[5 6]
  [7 8]]]
[[[1 2]
  [5 6]]

 [[3 4]
  [7 8]]]
[[[1 5]
  [2 6]]

 [[3 7]
  [4 8]]]

在这个例子中,我们定义了两个二维数组a和b。我们使用了stack沿着新轴(axis=0,1,2)连接。 以axis=0为例,数组a和b将被沿着新的第一轴连接,因此输出的形状将为(2,2,2)。所有三种用法的输出结果都基于相同的概念,但数组的形状可能会有所不同。

四、tile

tile函数可以将一个数组重复指定的次数,这对于扩展数组是非常有用的。

import numpy as np

a = np.array([1, 2, 3])
b = np.tile(a, 2)
c = np.tile(a, (2, 2))
print(b)
print(c)

输出:

[1 2 3 1 2 3]
[[1 2 3 1 2 3]
 [1 2 3 1 2 3]]

在这个例子中,我们使用tile函数将数组a重复两次,然后输出该数组。 然后,我们使用tile函数将数组a沿着两个轴重复2次,输出该数组。

五、repeat

repeat函数可以将数组沿着指定的轴重复指定的次数。类似于tile,但是该函数按照元素重复,而不是整个数组重复。

import numpy as np

a = np.array([[1, 2], [3, 4]])
b = np.repeat(a, 2)
c = np.repeat(a, 2, axis=0)
d = np.repeat(a, 2, axis=1)
print(b)
print(c)
print(d)

输出:

[1 1 2 2 3 3 4 4]
[[1 2]
 [1 2]
 [3 4]
 [3 4]]
[[1 1 2 2]
 [1 1 2 2]
 [3 3 4 4]
 [3 3 4 4]]

在这个例子中,我们定义了一个二维数组a。我们使用了repeat函数沿着轴0(行)重复两次,并且按照元素的顺序重复输出的一维数组。 接着,我们使用repeat函数沿着轴0(行)重复两次,形状变成了(4,2) , 接着,我们使用repeat函数沿着轴1(列)重复两次,形状变成了(2,4)

六、Conclusion

在numpy中,我们有很多合并数组的函数,包括vstack,hstack,concatenate,stack,tile和repeat。每个函数都有自己的特殊用途和用法,您可以根据需要选择最合适的方法将数组合并。