相同大小数组 对应位置取平均值
时间: 2023-08-31 16:06:25 浏览: 80
如果要对两个相同大小的数组对应位置取平均值,可以使用一个循环遍历数组,然后将两个数组对应位置的元素相加,再除以2,就可以得到取平均值后的结果。以下是一个示例代码:
```python
arr1 = [1, 2, 3, 4, 5]
arr2 = [6, 7, 8, 9, 10]
result = []
for i in range(len(arr1)):
avg = (arr1[i] + arr2[i]) / 2
result.append(avg)
print(result) # [3.5, 4.5, 5.5, 6.5, 7.5]
```
在这个示例中,我们首先定义了两个长度为5的数组 `arr1` 和 `arr2`,然后使用一个循环遍历这两个数组。在循环中,我们通过取对应位置的元素相加并除以2的方式得到了取平均值后的结果,并将其添加到一个新的数组 `result` 中。最后,我们打印出了 `result` 数组,其中包含了取平均值后的结果。
相关问题
python实现对应像素取平均
下面是一个实现对应像素取平均的 Python 代码示例:
```python
import numpy as np
from PIL import Image
# 读取两张图片
img1 = Image.open("image1.png")
img2 = Image.open("image2.png")
# 将图片转换为 numpy 数组
arr1 = np.array(img1)
arr2 = np.array(img2)
# 取出每个像素的 R、G、B 值
r1, g1, b1 = arr1[:, :, 0], arr1[:, :, 1], arr1[:, :, 2]
r2, g2, b2 = arr2[:, :, 0], arr2[:, :, 1], arr2[:, :, 2]
# 对应像素取平均
r_avg = (r1 + r2) // 2
g_avg = (g1 + g2) // 2
b_avg = (b1 + b2) // 2
# 将平均值合并成一个数组
arr_avg = np.zeros_like(arr1)
arr_avg[:, :, 0] = r_avg
arr_avg[:, :, 1] = g_avg
arr_avg[:, :, 2] = b_avg
# 将数组转换为图片并保存
img_avg = Image.fromarray(arr_avg)
img_avg.save("image_avg.png")
```
以上代码假设图片大小相同。如果图片大小不同,需要先将它们缩放到相同大小。另外,代码中使用了 PIL 库来读取和保存图片。
python实现两张图像对应像素取平均的图像融合
可以使用OpenCV库来实现两张图像对应像素取平均的图像融合。具体步骤如下:
1. 读取两张图像并将它们转换为相同的大小和类型。
2. 对于每个像素,将两张图像对应像素的值相加并除以2,得到新的像素值。
3. 将新的像素值赋给输出图像的对应像素位置。
4. 显示输出图像。
以下是示例代码:
```python
import cv2
# 读取两张图像
img1 = cv2.imread('image1.jpg')
img2 = cv2.imread('image2.jpg')
# 将两张图像转换为相同的大小和类型
img1 = cv2.resize(img1, (img2.shape[1], img2.shape[0]))
img2 = cv2.resize(img2, (img1.shape[1], img1.shape[0]))
# 创建输出图像
output = img1.copy()
# 对于每个像素,将两张图像对应像素的值相加并除以2,得到新的像素值
for i in range(img1.shape[0]):
for j in range(img1.shape[1]):
for k in range(img1.shape[2]):
output[i,j,k] = (int(img1[i,j,k]) + int(img2[i,j,k])) // 2
# 显示输出图像
cv2.imshow('Output', output)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
需要注意的是,在这个示例中,我们使用了三重循环来遍历每个像素和每个通道,这可能会导致程序执行缓慢。在实际应用中,可以尝试使用numpy数组操作来提高效率。