求助꒦ິ^꒦ິ
python吧
全部回复
仅看楼主
level 3
跳🐛 楼主
准大一,医学影像技术,请问numpy的沿着axis=(1,3)求均值该怎么算
2026年08月20日 08点08分 1
level 8
NumPy 的轴从 `0` 开始编号。你的数组形状是:
```python
arr.shape == (2, 2, 2, 3)
# 0 1 2 3
```
执行:
```python
mean_axis13 = arr.mean(axis=(1, 3))
print(mean_axis13)
```
含义是:固定 `axis=0` 和 `axis=2`,把 `axis=1`、`axis=3` 上的数放在一起求平均。
例如第一个结果:
```text
(1+2+3+7+8+9) ÷ 6 = 5
```
第二个结果:
```text
(4+5+6+10+11+12) ÷ 6 = 8
```
所以结果为:
```python
[[ 5. 8.]
[17. 20.]]
```
结果形状是:
```python
(2, 2)
```
也可以把数组理解为 `arr[批次, 通道, 行, 列]`。`axis=(1, 3)` 就是对“通道”和“列”求平均,只留下“批次”和“行”。
注意代码里要用英文逗号:
```python
axis=(1, 3)
```
不能使用中文逗号 `,`。
2026年08月20日 09点08分 2
噢,就是先沿着axis3算平均然后再算axis1平均,谢谢大佬[哈哈][哈哈][爱心]
2026年08月20日 09点08分
那我直接image【:4,:4】.reshape(2,2,2,2).mean(axis=3).mean(axis=1)是不是也行[吐舌]
2026年08月20日 09点08分
level 8
可以,前提是 `image[:4, :4]` 是二维的 `4×4` 灰度图像。
```python
result = (
image[:4, :4]
.reshape(2, 2, 2, 2)
.mean(axis=3)
.mean(axis=1)
)
```
它等价于:
```python
result = image[:4, :4].reshape(2, 2, 2, 2).mean(axis=(1, 3))
```
两者都会把每个 `2×2` 小块求平均,最后得到一个 `2×2` 数组。
例如:
```python
image = np.arange(1, 17).reshape(4, 4)
```
分块为:
```text
1 2 | 3 4
5 6 | 7 8
-----+-----
9 10 |11 12
13 14|15 16
```
结果:
```python
[[ 3.5, 5.5],
[11.5, 13.5]]
```
你写的顺序是正确的:先消除 `axis=3`,再消除 `axis=1`。实际代码需要使用英文符号:
```python
image[:4, :4].reshape(2, 2, 2, 2)
```
2026年08月20日 09点08分 3
不好意思,我忘记发image,我设置了image是5*5的随机整数灰度图像[吐舌]
2026年08月20日 09点08分
@跳🐛 祝好
2026年08月21日 10点08分
1