-
0 votesanswersviews
具有函数的for循环的Octave / Matlab向量化
我有一个函数,它有一个向量作为输入,我想用上一步的输出将函数应用于每个元素 . 我已经实现了for循环: function res = myFunc(F) if (numel(F) == 1) res = F(1); return; end; B = F(1); for idx = 2:numel(F) B = procAcc(F(idx),B); res = B; ... -
1 votesanswersviews
R lag / lead不规则时间序列数据
我有不规则的时间序列数据框,有 time (秒)和 value 列 . 我想添加另一列 value_2 ,其中值由 delay 秒引导 . 所以 value_2 在时间 t 等于 value 时 t + delay 或之后 . ts=data.frame( time=c(1,2,3,5,8,10,11,15,20,23), value=c(1,2,3,4,5,6,7,8,9,10) ) ... -
5 votesanswersviews
Pandas:每行最大值的矢量化操作
我有以下pandas dataframe df : index A B C 1 1 2 3 2 9 5 4 3 7 12 8 ... ... ... ... 我希望每行的最大值保持不变,所有其他值变为 -1 . 因此输出看起来像这样: index... -
2 votesanswersviews
使用Numba Vectorize目标的负速度增益= 'cuda'
我正在尝试使用CUDAcast#10中提供的代码片段here来测试使用Python Numba模块's @vectorize decorator for speeding up a code snippet relevant to my actual code. I' m的有效性,如下所示: import numpy as np from timeit import default_timer a... -
296 votesanswersviews
Pandas中map,applymap和apply方法之间的区别
你能告诉我什么时候使用这些矢量化方法和基本的例子吗? 我看到 map 是 Series 方法,而其余方法是 DataFrame 方法 . 我对 apply 和 applymap 方法感到困惑 . 为什么我们有两种方法将函数应用于DataFrame?再一次,说明用法的简单例子会很棒! -
113 votesanswersviews
在NumPy阵列的每个单元处有效地评估函数
给定NumPy数组A,将 same 函数f应用于 every cell的最快/最有效的方法是什么? 假设我们将分配给A(i,j)f(A(i,j)) . 函数,f,没有't have a binary output, thus the mask(ing) operations won' t帮助 . “明显的”双循环迭代(通过每个单元格)是最优解吗? -
0 votesanswersviews
R dplyr :: mutate,ifelse以全局变量为条件,从第一行开始循环
我很好奇为什么 dplyr::mutate() 调用中的 ifelse() 语句似乎只适用于我的数据帧的第一行 . 这将返回单个值,该值将在整个列中循环使用 . 由于在 ifelse() 的任何一种情况下评估的表达式仅在我的数据框的上下文中有效,我希望条件检查和结果表达式评估作为一个整体在列上执行,而不仅仅是它们的第一个元素 . 这是一个例子:我在数据框外定义了一个名为 checkVar 的变量 ... -
4 votesanswersviews
在过去365天窗口中执行运行总计的有效方法
这就是我的数据框架: 库(data.table) df <- fread(' Name EventType Date SalesAmount RunningTotal Runningtotal(prior365Days) John Email 1/1/2014 0 0 ... -
2 votesanswersviews
MATLAB:使用矢量化查找已排序数据的统计信息
我有一些功能代码,我试图通过消除for循环来加快速度 . 我有一组x,y对中的数据作为两个向量,因此x(k)和y(k)形成一对 . 我也有一组bin边(xe) . 对于每个bin j,在该bin中存在一组x值,由xe(j)<= x(k)<xe(j 1)定义 . 对于每个箱,我想找到该箱中所有y(k)与x(k)的平均值和标准差 . 完成此任务的MATLAB代码如下: [meany, st... -
2 votesanswersviews
2D中值滤波器,忽略nan值
作为我项目的一部分,我需要使用在rxr窗口上执行中值过滤的代码,并忽略nan值 . 我目前使用MATLAB的nlfilter函数 . 问题是它非常慢:300x300示例需要将近5秒,而MATLAB的medfilt2需要0.2秒 . 有没有人有更高效和优雅的解决方案? 注意:在我的情况下,在边界上的行为并不重要 . 在这个例子中,nlfilter自动用零填充数组,但其他解决方案,如边界重复也是可以的... -
34 votesanswersviews
混淆数组中每行的非零元素--Python / NumPy
我有一个相对稀疏的数组,我想遍历每一行并只调整非零元素 . 示例输入: [2,3,1,0] [0,0,2,1] 示例输出: [2,1,3,0] [0,0,1,2] 注意零如何改变位置 . 要对每行中的所有元素(包括零)进行洗牌,我可以这样做: for i in range(len(X)): np.random.shuffle(X[i, :]) 我试图做的是这样的: for i in ... -
2 votesanswersviews
Numpy解决没有循环的3d线性方程
我想解决线性方程Ax = b,每个A包含在3d矩阵中 . 例如, 在Ax = B中,假设A.shape是(2,3,3) ie = [[[1,2,3],[1,2,3],[1,2,3]] [[1,2,3],[1,2,3],[1,2, 3]]] 和B.shape是(3,1),即[1,2,3] ^ T. 我想知道Ax = B的每个3向量 x ,即(x_1,x_2,x_3) . 我想到的是将B与np.one... -
3 votesanswersviews
快速计算矩阵平方的对角线的方法
我有一个 nxm 矩阵 V ,其中我计算了方形 S=V'*V . 对于我的后续计算,我只需要 S 的对角线,所以我写了 s=diag(V'*V) . 然而,这有点浪费,因为我也在计算所有非对角元素 . 是否有 fast 方法只计算 S 的对角线元素?当然,我可以使用 for 循环,但显式循环不是在MATLAB中执行操作的快速方法 . 谢谢!!! -
1 votesanswersviews
如何从张量流中的向量构造成对差的平方?
我有一个在TensorFlow中具有N维的1D向量, 如何构造成对平方差的和? 示例 Input Vector[1,2,3]Output 6Computed As (1-2)^2+(1-3)^2+(2-3)^2. 如果我输入为N-dim向量l,则输出应为sigma_ {i,j}((l_i-l_j)^ 2) . Added question :如果我有一个2d矩阵,并希望对矩阵的每一行执行相同... -
2 votesanswersviews
前n个值的Tensorflow指标矩阵
有谁知道如何提取排名2张量的每行的前n个最大值? 例如,如果我希望形状[2,4]的张量的前2个值具有值: [[40,30,20,10],[10,20,30,40]] 所需的条件矩阵如下所示:[[True,True,False,False],[False,False,True,True]] 一旦我有了条件矩阵,我就可以使用tf.select来选择实际值 . 谢谢你的帮助! -
7 votesanswersviews
将矩阵的每列乘以另一个矩阵
我有一个 M x N 矩阵 . 我想将每个 N 列乘以 M x M 矩阵 . 以下是循环中的这个,但我不知道如何对其进行矢量化 . u=repmat(sin(2*pi*f*t),[n 1]); W = rand(n); answer = size(u); for i=1:size(u,2) answer(:,i) = W*u(:,i); end -
1 votesanswersviews
在张量内矢量化矩阵乘法
我在渲染部分代码时遇到了一些麻烦 . 我有一个(n,n,m)张量,我想将每个切片乘以m乘以秒(n乘n)矩阵(非元素) . 这是for循环的样子: Tensor=zeros(2,2,3); Matrix = [1,2; 3,4]; for j=1:n Matrices_Multiplied = Tensor(:,:,j)*Matrix; Recursive_Matrix=Recur... -
0 votesanswersviews
使用子集()进行矢量化?
我有一个 scores ( V3 )的数据框,用于一系列整数范围( V1 到 V2 ) . scores <- structure(list(V1 = c(2037651L, 2037659L, 2037677L, 2037685L, 2037703L, 2037715L), V2 = c(2037700L, 2037708L, 2037726L, 2037734L, 20377... -
5 votesanswersviews
在Theano中循环(或矢量化)可变长度矩阵
我有一个矩阵列表 L ,其中每个项目 M 是一个 x*n 矩阵( x 是一个变量, n 是一个常量) . 我想为 L 中的所有项计算 M'*M 的总和( M' 是 M 的转置),如下面的Python代码所示: for M in L: res += np.dot(M.T, M) 实际上我想在Theano中实现它(它不支持可变长度的多维数组),我不想将所有矩阵填充到相同的大小,因为这会浪费太多空... -
3 votesanswersviews
Xeon Phi上的loaddup_pd / unpacklo_pd
如果我在512宽SIMD向量中有以下双打,就像在Xeon Phi寄存器中一样: m0 = |b4|a4|b3|a3|b2|a2|b1|a1| 有可能成为: m0_d = |a4|a4|a3|a3|a2|a2|a1|a1| 使用单一指令?此外,由于双打没有按位内在函数,这仍然是实现上述目标的有效方法吗? m0_t = _mm512_swizzle_pd(m9,_MM_SWIZ_REG_CDAB)... -
1 votesanswersviews
Xeon Phi中的分散/聚集
我指的是关于Xeon Phi指令集的Intel手册,并且无法理解散布/收集指令的工作原理 . 假设我有以下双打矢量: A-> |b4|a4|b3|a3|b2|a2|b1|a1| 是否可以创建4个向量,如下所示: V1->|b1|a1|b1|a1|b1|a1|b1|a1| V2->|b2|a2|b2|a2|b2|a2|b2|a2| V3->|b3|a3|b3|a3|b3|a... -
4 votesanswersviews
使用宽对齐的未对齐数据访问进行矢量化/优化循环(特别是Xeon Phi)
这是我向Stackoverflow社区提问的第一次经历 . 对不起,如果我的问题不符合论坛的风格/大小 - 将随着经验而改善 . 我正在尝试使用英特尔编译器14.0.1在C中对一个循环进行矢量化,以便更好地利用宽512位寄存器来优化英特尔至强融核的速度 . (受https://software.intel.com/en-us/articles/data-alignment-to-assist-v... -
0 votesanswersviews
Xeon phi卸载模式如何利用线程并行和矢量化
我正在使用cilk plus和offload对Xeon phi进行一些性能测试 . 在一个简单的向量添加程序中,我有两种方法可以做到: 使用cilk_for将任务拆分到Xeon phi中的不同线程: __declspec(target(mic)) void vector_add(double *A,double *B,double *C, int vector_size) { _Cil... -
1 votesanswersviews
英特尔C编译器(icc)中的虚假自动向量化
我需要在程序中使用SSE向量化一些巨大的循环 . 为了节省时间,我决定让ICC处理它 . 为此,我准备好数据,考虑到对齐,我使用了编译器指令 #pragma simd ,_ #pragma aligned , #pragma ivdep . 使用多个 -vec-report 选项进行编译时,编译器会告诉我循环是向量化的 . 快速查看编译器生成的程序集似乎可以确认,因为您可以找到大量的矢量指令,... -
1 votesanswersviews
让编译器以合理的方式自动向量化代码
我试图找出如何构造数值模拟的主循环代码,以便编译器以紧凑的方式生成漂亮的矢量化指令 . C伪代码最容易解释这个问题,但我也有一个受同一类问题影响的Fortran版本 . 考虑以下循环,其中 lots_of_code_* 是一些复杂的 expressions ,它产生了相当数量的机器指令 . void process(const double *in_arr, double *out_arr, in... -
2 votesanswersviews
如何使GCC像ICC一样生成向量指令?
我一直在我的项目中使用ICC,ICC将很好地利用向量指令 . 最近我尝试使用GCC(版本5.5)来编译相同的代码,但是在某些模块上,GCC的版本比ICC慢10倍 . 当我做复杂的乘法等时会发生这种情况 . 示例代码如下: 定义: float *ptr1 = _mm_malloc(1280 , 64); float *ptr2 = _mm_malloc(1280 , 64); float compl... -
2054 votesanswersviews
为什么在单独的循环中元素添加比在组合循环中快得多?
假设 a1 , b1 , c1 和 d1 指向堆内存,我的数字代码具有以下核心循环 . const int n = 100000; for (int j = 0; j < n; j++) { a1[j] += b1[j]; c1[j] += d1[j]; } 此循环通过另一个外部 for 循环执行10,000次 . 为了加快速度,我将代码更改为: for (int j =... -
2 votesanswersviews
R - 每次从另一列中每个单元格的一列上的一个单元格运行
我有一个函数,她的输入应该每次从另一列中每个单元格的一列上的一个单元格运行 . 我可以用循环来做,但是,我正在寻找矢量化过程或使其更快 . 至于现在,我需要几天才能完成这个过程 . 理想情况下,它将使用 tidyverse ,但任何帮助将不胜感激 . 我的循环看起来像这样: results <- data.frame( pathSubject1 = as.character(), ... -
2 votesanswersviews
如何在python中矢量化包含eigvalsh的复杂代码
我有以下代码(抱歉,它不是太小,我已经尝试从原来减少它) . 基本上,我在运行 eval_s() 方法/函数时遇到性能问题,其中I: 1)用 eigvalsh() 找到4x4埃尔米特矩阵的4个特征值 2)将特征值的倒数加到变量 result 中 3)并且我为 x,y,z 参数化的许多矩阵重复步骤1和2,将累积和存储在 result 中 . 我在第3步中重复计算(找到特征值和求和)的次数取决于我的代... -
2 votesanswersviews
从矩阵的每一行中删除一个元素,每个元素位于不同的列中
如何在for循环中一次删除一行时,如何删除矩阵中不是全部为直线的元素? 例: [1 7 3 4; 1 4 4 6; 2 7 8 9] 给定一个向量(例如[2,4,3])如何删除每一行中的元素(向量中的每个数字对应于列号),而不是一次遍历每一行并删除每个元素? 示例输出将是: [1 3 4; 1 4 4; 2 7 9]