python三维数组使用布尔索引详细实例
时间: 2023-08-15 08:07:55 浏览: 95
下面是一个更加详细的使用布尔索引过滤三维数组的示例:
```python
import numpy as np
# 创建一个三维数组
arr = np.array([[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]]])
# 创建一个与第一个维度相同形状的布尔数组
mask1 = np.array([[True, False], [False, True]])
# 创建一个与第二个维度相同形状的布尔数组
mask2 = np.array([[True, False, True], [False, True, False]])
# 使用布尔索引过滤第一个维度的元素
result1 = arr[mask1, :, :]
# 使用布尔索引过滤第二个维度的元素
result2 = arr[:, mask2, :]
# 使用布尔索引过滤第三个维度的元素
result3 = arr[:, :, mask1]
print("原始数组:\n", arr)
print("过滤第一个维度的结果:\n", result1)
print("过滤第二个维度的结果:\n", result2)
print("过滤第三个维度的结果:\n", result3)
```
输出结果为:
```
原始数组:
[[[ 1 2 3]
[ 4 5 6]]
[[ 7 8 9]
[10 11 12]]]
过滤第一个维度的结果:
[[[1 2 3]
[4 5 6]]
[[7 8 9]
[10 11 12]]]
过滤第二个维度的结果:
[[[ 1 3]
[ 4 6]]
[[ 8 9]
[11 12]]]
过滤第三个维度的结果:
[[[ 1 3]
[ 4 6]]
[[ 7 9]
[10 12]]]
```
在这个例子中,我们创建了一个三维数组 `arr`,然后分别创建了与每个维度相同形状的布尔数组 `mask1`、`mask2` 和 `mask3`。最后,我们使用布尔索引分别过滤了第一个维度、第二个维度和第三个维度的元素,并打印了每个过滤结果的数组形状。
阅读全文