You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NumPy:如何检查tuple是否在一维NumPy数组中及图片取色报错解决

报错原因
  • 初始化的colors是一维空数组,调用np.append时会自动将输入的RGB三元组拆分为3个单独的数值存储,最终colors中仅存单个0-255的数值,而非完整的RGB颜色单元。
  • numpy的in运算符执行元素级比较时,长度为3的tuple与数组内单个数值维度不匹配,导致比较失败,触发弃用警告。
高效实现方案

完全无需编写Python循环,直接通过numpy向量化操作实现,大尺寸图片处理效率比原循环方案提升千倍以上:

from PIL import Image
import numpy as np

img = Image.open("bg.jpg").convert("RGB")
# 转换为形状为(高度, 宽度, 3)的numpy数组
img_arr = np.array(img)
# 重塑为(总像素数, 3)的二维数组,每一行对应一个RGB颜色
pixels_arr = img_arr.reshape(-1, 3)
# 按行去重得到所有不重复的RGB颜色,输出为形状为(颜色总数, 3)的数组
unique_colors = np.unique(pixels_arr, axis=0)

如果需要转为Python原生tuple列表,可追加代码:

unique_color_list = [tuple(color) for color in unique_colors]

可选扩展

如果需要同时统计每种颜色的出现次数,可修改去重行代码为:

unique_colors, counts = np.unique(pixels_arr, axis=0, return_counts=True)

其中counts数组与unique_colors一一对应,存储对应颜色的出现频次。

内容的提问来源于stack exchange,提问作者Jumanji176

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 14:12:03