我看到一些像这样的代码:
K = np.array([B[z==i].mean(axis=0) for i in range(k)])
其中B
是二维数组(矩阵),z
是一维数组(向量)。
我想知道B[z==i]
是什么意思?
答案 0 :(得分:0)
在B[z==i]
中,您有两种类型的操作。
首先,给定B[i] for i in range(k)
你在这样的情况下做的是对列表 B 的值的迭代。
在您的情况下,您有z==i
,这是对象之间的比较。
在python中,要比较的对象不需要具有相同的类型,但如果类型不同,它们总是返回False
。
关于比较如何工作的一点摘要:
数字进行算术比较。
使用数字等价物按字典顺序比较字符串 (字符的内置函数ord())的结果。 在这种行为中,Unicode和8位字符串是完全可互操作的。
使用字典比较词典和列表进行比较 相应的元素。这意味着要比较相等的每个元素 必须比较相等,两个序列必须是相同的类型和 长度相同。
如果不相等,则序列的排序与第一个序列相同 不同的元素。例如,cmp([1,2,x],[1,2,y])返回 与cmp(x,y)相同。如果相应的元素不存在,那么 首先排序较短的序列(例如,[1,2]< [1,2,3])。
映射(字典)比较相等,当且仅当它们已排序 (键,值)列表比较等于.5.3除了相等之外的结果 一致地解决,但没有另外定义。
大多数其他类型比较不相等,除非它们是同一个对象;该 选择是否将一个对象视为小于或大于另一个对象 一个是任意的,但在一次执行中是一致的 程序
这份文件有点旧,但您可以获得有关比较的更多信息:source