码奴学徒 2021-10-23 17:38 采纳率: 75%
浏览 39

Python列表使用问题:res1 =center[label.flatten()]或者XM = MI[bestLabel==0]两种写法都代表什么意思啊?

Python基础不牢,有些语法都不知道是什么,此处贴出源代码,是一个划分大米和小米的Kmeans算法示例。

import cv2 as cv
import numpy as np
import matplotlib.pyplot as plt

#创建要进行分类的数据,小米和大米各60个数据,小米直径为0,50,大米为200,250
xiaoMI = np.random.randint(0,50,60)
daMI = np.random.randint(200,250,60)

#将数据混合,并且reshape为120列
MI = np.hstack((xiaoMI,daMI))
MI = MI.reshape((120,1))
MI = np.float32(MI)

#调用kmeans
#算法迭代的终止标签
criteria = (cv.TERM_CRITERIA_EPS+cv.TERM_CRITERIA_MAX_ITER,10,1.0)#表示精度达到1.0,或者迭代次数达到10时,停止迭代。
flags = cv.KMEANS_RANDOM_CENTERS#表示随机选取中心点
retval,bestLabel,centers = cv.kmeans(MI,2,None,criteria,10,flags)#函数参数分别为,要进行划分的数据、划分成几份、返回值索引、criteria、使用不同的初始分类值得次数、flags

#打印返回值
print(retval)
print(bestLabel)
print(centers)
# 获取分类结果
XM = MI[bestLabel==0]
DM = MI[bestLabel==1]

#绘制原始数据
plt.plot(XM,'ro')
plt.plot(DM,'bo')

#绘制中心点
plt.plot(centers[0],'rx')
plt.plot(centers[1],'bx')
plt.show()
  • 写回答

1条回答 默认 最新

  • z1721091145 2021-10-23 18:06
    关注
    • res1 =center[label.flatten()]
      确定”label.flatten()“ 返回类型 和 center 的类型,
      如果”center“ 类型是列表,”label.flatten()“肯定只可能是 int类型,按下标取值,例如 : center[1]。
      如果”center“ 类型是字典,”label.flatten()“ 可能性就很多,但是可以确定是不可变类型,通过 键值对的键取值,例如:center["key"] 或 center.get("key")

    • XM = MI[bestLabel==0]
      基本可以确定 MI 是字典,”bestLabel==0“ 结果是 True 或 False,例如: MI[True]

    评论

报告相同问题?

问题事件

  • 创建了问题 10月23日

悬赏问题

  • ¥15 拟通过pc下指令到安卓系统,如果追求响应速度,尽可能无延迟,是不是用安卓模拟器会优于实体的安卓手机?如果是,可以快多少毫秒?
  • ¥20 神经网络Sequential name=sequential, built=False
  • ¥16 Qphython 用xlrd读取excel报错
  • ¥15 单片机学习顺序问题!!
  • ¥15 ikuai客户端多拨vpn,重启总是有个别重拨不上
  • ¥20 关于#anlogic#sdram#的问题,如何解决?(关键词-performance)
  • ¥15 相敏解调 matlab
  • ¥15 求lingo代码和思路
  • ¥15 公交车和无人机协同运输
  • ¥15 stm32代码移植没反应