创建一个np.arange(15)的数组,转换成三维数组,筛选出里面大于7的元素和小于3的元素,并生成新的数组,输出新的数组,并验证新获得的数组是副本还是视图。
时间: 2024-04-30 19:23:32 浏览: 54
```python
import numpy as np
# 创建一维数组
arr = np.arange(15)
print("一维数组:")
print(arr)
# 转换成三维数组
arr_3d = arr.reshape(3, 5)
print("三维数组:")
print(arr_3d)
# 筛选出大于7和小于3的元素
new_arr = arr[(arr > 7) | (arr < 3)]
print("新数组:")
print(new_arr)
# 验证新数组是副本还是视图
print("新数组是否为副本:", new_arr.flags.owndata)
print("原数组是否为副本:", arr.flags.owndata)
```
输出结果:
```
一维数组:
[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14]
三维数组:
[[ 0 1 2 3 4]
[ 5 6 7 8 9]
[10 11 12 13 14]]
新数组:
[ 0 1 2 8 9 10 11 12 13 14]
新数组是否为副本: True
原数组是否为副本: True
```
可以看到,新数组是原数组的副本,因为`new_arr.flags.owndata`和`arr.flags.owndata`都是True。
相关问题
创建一个np.arange(15)的数组,转换成三维数组,筛选出里面大于7的元素和小于3的元素,并生成新的数组,输出新的数组,并验证新获得的数组是副本还是视图。
```python
import numpy as np
arr = np.arange(15)
arr_3d = arr.reshape((5,3))
new_arr = arr_3d[(arr_3d > 7) | (arr_3d < 3)]
print(new_arr)
print(new_arr.base is None) # 输出True,说明new_arr是副本
```
输出结果为:
```
[ 0 1 2 8 9 10 11 12 13 14]
True
```
将一维数组np.arange(10)转换为2行的二维数组
可以使用 numpy 的 `reshape` 函数将一维数组转换为指定形状的二维数组,具体代码如下:
```python
import numpy as np
arr = np.arange(10)
new_arr = arr.reshape(2, -1) # -1表示自动计算另一个维度的大小
print(new_arr)
```
输出结果为:
```
[[0 1 2 3 4]
[5 6 7 8 9]]
```
其中,`reshape(2, -1)` 表示将数组转换为 2 行的二维数组,而 `-1` 表示自动计算另一个维度的大小,这里计算得到的大小为 5,使得数组的总大小不变。
阅读全文