我觉得这和我之前问的问题类似,但我想不出来。如何将这两行代码转换为没有for循环的一行代码?
for i in xrange(X.shape[0]):
dW[:,y[i]] -= X[i]
在英语中,矩阵X中的每一行都应该从向量y给出的矩阵dW中的相应列中减去。
我应该提到dW是DXC,而X是NXD,所以X的转置不具有与W相同的形状,否则我可以重新排序X的行,并直接进行转置。但是,dW中的列可能有多个需要减去的相应行。
我觉得我不太了解python中的索引是如何工作的,这使得移除不必要的for循环变得困难,甚至不知道哪些for循环是可以移除的。
假设我有一个矩阵A [m x 1],其中m不一定是偶数。我要创建一个矩阵B also [m x 1],它告诉我A中元素的十进制(即矩阵B的数字从1到10)。
我知道我可以使用函数sort(A)来得到元素在A中的位置,从那里我可以手动得到十进制。还有别的办法吗?
我认为一种可能是B = ceil(10 * tiedrank(A) / length(A)。你认为如何?这有什么问题吗?
而且,更普遍地说,如果我有一个矩阵A [m x n],并且我想要创建一个矩阵B also [m x n],其中B的每个列在A中应该有对应列的十分之一,那么是否有一种方法可以不通过这些列进行for循环?
希望眼前的问题
我正在尝试从一个最大(Col)的表中选择一行。但是,匹配列是错误的。它返回表本身的第一行,而不是max()值的对应列。
select
article, max(totalsale) as maxsale
from
(select
article, sum(sold) as totalsale
from art6maanden
group by article) as maxsale
;
因此,子查询将返回以下内容:
productA | 12
....
productZ | 70
完整查询返回:productA | 70
它应该返回produ
我试图在矩阵的最大值出现之前获得矩阵的最小值。我有两个矩阵:矩阵数据和矩阵a。矩阵a是矩阵数据的子集,由矩阵数据的最大值组成。我有以下代码,但显然做错了什么。
edit:
矩阵a是矩阵数据的最大值。我是从下面的代码中得出的:
for x=1:size(data,1)
a(x)=max(data(x,:));
end
a=a'
clear x
矩阵b代码:
for x=1:size(data,1)
b(x)=min(data(x,(x<data==a)));
end
b=b'
clear x
matrix data matrix a matrix b
1 2
我有一个20*120矩阵。对于矩阵中的每一列,我需要在所有值之间找到最大值,然后对其余的值进行求和。然后,我需要将最大值除以剩余值的总和。我尝试了以下代码,但结果不正确。有什么问题吗?
s = 1:z %z=120
for i = 1:x %x=20
maximss = max(Pres_W); %maximum value
InterFss = (sum(Pres_W))-maximss; %remaining values
SIRk(:,s) = (maximss(:,s))./(InterFss(:,s));
end