np.stack和np.concatenate有什么区别
时间: 2024-05-14 22:19:10 浏览: 100
谈一谈数组拼接tf.concat()和np.concatenate()的区别
`np.concatenate`和`np.stack`都是将多个数组合并成一个数组,但它们的实现方式有所不同。
`np.concatenate`将多个数组沿着一个已经存在的轴进行拼接,可以看作是将多个数组“粘”在一起。例如:
```python
import numpy as np
a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6]])
# 沿着axis=0轴拼接
c = np.concatenate((a, b), axis=0)
print(c)
# 输出:[[1 2]
# [3 4]
# [5 6]]
# 沿着axis=1轴拼接
d = np.concatenate((a, b.T), axis=1)
print(d)
# 输出:[[1 2 5]
# [3 4 6]]
```
`np.stack`则是将多个数组沿着新的轴进行拼接,因此需要指定拼接的轴。例如:
```python
import numpy as np
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
# 沿着新的axis=0轴拼接
c = np.stack((a, b), axis=0)
print(c)
# 输出:[[1 2 3]
# [4 5 6]]
# 沿着新的axis=1轴拼接
d = np.stack((a, b), axis=1)
print(d)
# 输出:[[1 4]
# [2 5]
# [3 6]]
```
因此,`np.concatenate`和`np.stack`的区别在于它们拼接的轴不同,前者是已经存在的轴,后者是新的轴。
阅读全文