说我有一个矩阵 A
A =
0 1 2
2 1 1
3 1 2
Run Code Online (Sandbox Code Playgroud)
和另一个矩阵 B
B =
0 42
1 24
2 32
3 12
Run Code Online (Sandbox Code Playgroud)
我想将每个值替换A为与之关联的值B.
我会得到的
A =
42 24 32
32 24 24
12 24 32
Run Code Online (Sandbox Code Playgroud)
如果没有循环我怎么能这样做?
我有一些随机长度的矢量,如,
a = [ 20
78
90
180];
b = [ 54
102
1020];
Run Code Online (Sandbox Code Playgroud)
如何n = 3在每个元素之前和之后生成像整数一样的度量,如,
a1 = [17 18 19 20 21 22 23 b1 = [51 52 53 54 55 56 57
75 76 77 78 79 80 81 99 100 101 102 103 104 105
87 88 89 90 91 92 93 1017 1018 1019 1020 1021 1022 1023];
177 178 179 180 181 182 183];
Run Code Online (Sandbox Code Playgroud)
没有任何循环,提前谢谢,
BigList = rand(20, 3)
LittleList = rand(5, 3)
Run Code Online (Sandbox Code Playgroud)
我想为大列表中的每一行找到小列表中的"最近"行,由欧几里德范数定义(即k = 3维度中相应值之间的平方距离之和).
我可以看到如何使用两个循环来做到这一点,但似乎应该有一个更好的方法来使用内置矩阵操作来做到这一点.
我试图在不同大小的MATLAB中减去两个数组,我目前正在使用for循环,这需要很长的时间.有没有办法让下面的代码更快?我想知道是否可以以某种方式在没有for循环的情况下快速创建一个117x489x489的数组.
第一个数组a的尺寸为1x117,第二个数组b的尺寸为489x489.结果矩阵的尺寸为117x489x489.
这是我如何减去两个数组:
for i = 1:length(a)
result(i) = a(i) - b;
end
Run Code Online (Sandbox Code Playgroud) 我想在此后对产品的总和进行矢量化,以加快我的Matlab代码.可能吗?
for i=1:N
A=A+hazard(i)*Z(i,:)'*Z(i,:);
end
Run Code Online (Sandbox Code Playgroud)
其中hazard是向量(N x 1)并且Z是矩阵(N xp).
谢谢!
假设您有一个包含3或4个元素的numpy数组
例如:
3
4
4
4
3
3
3
Run Code Online (Sandbox Code Playgroud)
我想改变这个数组,这样如果一个元素是3,那么它应该变成一个数字X,如果元素是4,它应该变成一个数字Y.保证X不同于Y.对于上面的数组我们会得到:
X
Y
Y
Y
X
X
X
Run Code Online (Sandbox Code Playgroud)
我在考虑做这样的事情:
arr[arr==3]=X
arr[arr==4]=Y
Run Code Online (Sandbox Code Playgroud)
但是,如果X是4呢?然后最后整个数组将只包含Ys.
我试图避免出于性能原因使用for循环,但如果这是唯一的方法,我可以负担得起遵循该路线.
我有两个大小的矢量n和m
a = [a1 a2 ... an];
b = [b1 b2 ... bm];
Run Code Online (Sandbox Code Playgroud)
我想"乘以"它们来获得结果:
c =
a1*b1 a1*b2 ... a1*bm
a2*b1 a2*b2 ... a2*bm
. . .
. . .
an*b1 an*b2 ... an*bm
Run Code Online (Sandbox Code Playgroud)
有没有简单的方法来获得这样的结果而不诉诸于循环或矩阵?
我想矢量化以下操作:
V[i+1] = max(V[i] - c, V[i+1]) for i=1 to n-1 (V[0] = 0)
Run Code Online (Sandbox Code Playgroud)
相应的天真伪代码是:
for (i=0; i < n; i++) {
if (V[i]-c > V[i+1]) V[i+1] = V[i]-c
}
Run Code Online (Sandbox Code Playgroud)
哪些SIMD说明有用?
我试图使用half2,但我遇到了一个错误,即
error: class "__half2" has no member "y"
Run Code Online (Sandbox Code Playgroud)
发生错误的代码部分如下:
uint8_t V_ [128]; // some elements (uint8), to save space
float V_C[128]; // storing the diff to use later
half2 *C_ = C.elements; // D halfs stored as half2, to be read
Cvalue = 0.0;
for (d = 0; d < D; d+=2)
{
V_C [d ] = V_[d] - __half2float(C_[d/2].x) ;
V_C [d+1] = V_[d+1] - __half2float(C_[d/2].y) ;
Cvalue += V_C [d] * V_C [d] ;
Cvalue += V_C [d+1] …Run Code Online (Sandbox Code Playgroud) library(dplyr)
Run Code Online (Sandbox Code Playgroud)
我有以下数据集
set.seed(123)
n <- 1e6
d <- data.frame(a = letters[sample(5, n, replace = TRUE)], b = letters[sample(5, n, replace = TRUE)], c = letters[sample(5, n, replace = TRUE)], d = letters[sample(5, n, replace = TRUE)])
Run Code Online (Sandbox Code Playgroud)
我想计算每一行中不同字母的数量.为此,我使用
sapply(as.data.frame(t(d)), function(x) n_distinct(x))
Run Code Online (Sandbox Code Playgroud)
但是因为这种方法实现了一个循环,所以它很慢.你对如何提高速度有什么建议吗?
我的笔记本电脑是一块垃圾,所以......
system.time(sapply(as.data.frame(t(d)), function(x) n_distinct(x)))
user system elapsed
185.78 0.86 208.08
Run Code Online (Sandbox Code Playgroud)