虽然类似的问题已经提过好几次了,但是我仍然不能在Python中创建类似matlab ismember函数的函数。特别是,我想在循环中使用这个函数,并在每次迭代中将一个完整的矩阵与另一个矩阵的元素进行比较。如果出现相同的值,我想打印1,在任何其他情况下打印0。
假设我有以下矩阵
d = np.reshape(np.array([ 2.25, 1.25, 1.5 , 1. , 0. , 1.25, 1.75, 0. , 1.5 , 0. ]),(1,10))
d_unique = np.unique(d)
那我有了
d_unique
array([ 0. , 1. , 1.25, 1.5 , 1.75, 2.25])
现在我想像
J = np.zeros(np.size(d_unique))
for i in xrange(len(d_unique)):
J[i] = np.sum(ismember(d,d_unique[i]))
作为输出:
J = [3,1,2,2,1,1]
有人知道吗?多谢提前。
为了回答您的问题,我想您可以将ismember定义为类似于:
但我不熟悉纽比,所以可能需要稍作调整。
我想您也可以使用集合中的计数器:
再一次,不是numpy,你可能需要在某处做些
list(d)
。尝试以下功能:
这应该非常像对应的MALTAB函数。
与其他答案不同的是,numpy有内置的numpy.in1d来实现这一点。
在您的案例中的用法:
注意:它也接受列表作为输入。
相关问题 更多 >
编程相关推荐