reshape(-1)和flatten()
时间: 2023-08-16 13:10:11 浏览: 75
reshape(-1)和flatten()都可以将一个多维数组(如二维数组)展平成一维数组。但是两者之间有些许区别:
- reshape(-1)返回的是一个新的数组,而flatten()返回的是一个视图(view);
- reshape(-1)可以用于任意多维数组的展平,而flatten()只能用于二维数组的展平。
具体来说,reshape(-1)返回的是一个新的数组,该数组和原数组共享内存,但是形状不同。例如,对于一个二维数组,reshape(-1)会返回一个形状为(n,)的一维数组。
而flatten()返回的是一个视图(view),该视图是原数组的一个副本,但是展平后的形状为(n,)的一维数组。因此,对于一个二维数组,flatten()会返回一个形状为(n,)的一维数组。
下面是一个例子,展示了reshape(-1)和flatten()的用法:
```python
import numpy as np
# 创建一个二维数组
arr = np.array([[1, 2], [3, 4]])
# 使用reshape(-1)展平数组
arr_reshape = arr.reshape(-1)
# 使用flatten()展平数组
arr_flatten = arr.flatten()
# 打印展平后的数组
print(arr_reshape) # [1 2 3 4]
print(arr_flatten) # [1 2 3 4]
```
在上面的例子中,展平后的数组相同,但是使用reshape(-1)返回的是一个新的数组,而flatten()返回的是一个视图。