将带~=不相等条件的MATLAB求和函数转换为Python
我想将这个将带~=不相等条件的MATLAB求和函数转换为Python,python,matlab,Python,Matlab,我想将这个sum(sum(W_set{1}~=0))转换成Python: %MATLAB代码: W_集={[[-0.05747274,-0.05268928], [-0.10961724, 0.10119643], [-0.0327577 , 0.01514941]]], [[[-0.05557293, 0.11311244], [-0.22935626, -0.11837874], [-0.05567432, -0.0558801 ]]]}; 和(和(W_集{1}~=0)) 输出为6。
sum(sum(W_set{1}~=0))
转换成Python:
%MATLAB代码:
W_集={[[-0.05747274,-0.05268928],
[-0.10961724, 0.10119643],
[-0.0327577 , 0.01514941]]],
[[[-0.05557293, 0.11311244],
[-0.22935626, -0.11837874],
[-0.05567432, -0.0558801 ]]]};
和(和(W_集{1}~=0))
输出为6。如何在Python中获得此输出,Python中的W_set
是一个列表
我尝试过以下方法,但结果不一样
#Python代码:
将numpy作为np导入
W_集=[-0.05747274,-0.05268928],
[-0.10961724, 0.10119643],
[-0.0327577 , 0.01514941]]],
[[[-0.05557293, 0.11311244],
[-0.22935626, -0.11837874],
[-0.05567432, -0.0558801 ]]]]
如果np.数组(W_集[0])。全部!=0:#检查值不等于零
sum=np.sum(np.sum(W_集[0]))#sum
打印(总和)
答案是-0.13619112。在MATLAB
sum
函数中使用运算符~=
的含义是什么?您可以使用numpy.sum
它将在所有轴上求和,但为了在矢量化指令中将元素与零进行比较,您需要它是一个numpy数组
np.sum(np.array(W_set[0])!=0)
或者,您可以制作W_set=np.array([…])
,然后
np.sum(W_集[0]!=0)
(W_集[0]!=0).sum()
在Matlab中:W_集{1}~=0
返回与W_集{1}
大小相同的数组,但该数组仅包含1和0,具体取决于原始数组中相同位置的元素是否不为零。所以,sum(sum(W_set{1}~=0))
基本上只是计算原始数组中非零元素的数量。太棒了!出于好奇,Matlab中的W_集{1}~=0
返回1s。它何时返回0,因为我有负元素W_set{1}
只有当起始元素正好为0时,它才会返回0。正如您可能猜到的,负元素不是零,因此它们也返回1。