vectorization相关内容

3d 数组的 Numpy 元素乘积

我有两个形状为 (N, 2, 2) 的 3d 数组 A 和 B,我想根据 N 轴按元素乘以每个 2x2 矩阵上的矩阵乘积.使用循环实现,它看起来像 C[i] = dot(A[i], B[i]) 有没有办法不用循环就可以做到这一点?我已经研究了 tensordot,但一直无法让它工作.我想我可能想要类似 tensordot(a, b, axes=([1,2], [2,1])) 的东西,但这给了我 ..
发布时间:2021-11-18 05:13:33 其他开发

numpy中frompyfunc和vectorize的区别

vectorize 和 frompyfunc? 两者看起来非常相似.它们各自的典型用例是什么? 编辑:正如 JoshAdel 所指出的,vectorize 类似乎是建立在 frompyfunc 之上的.(请参阅来源).我仍然不清楚 frompyfunc 是否可能有任何 vectorize... 未涵盖的用例 解决方案 正如 JoshAdel 所指出的,vectorize 包装了 ..
发布时间:2021-11-18 04:56:33 其他开发

生成大量随机卡片组 - NumPy

我需要生成大量随机扑克牌.速度很重要,所以一切都必须是 numpy 矩阵形式. 我知道我可以从一副牌中生成两张牌,如下所示: np.random.choice(12*4,2, replace=False) 如何执行相同的查询,以便在没有 for 循环的情况下创建二维数组?难点是每一轮都需要从原来的栈中分配,所以replace只对行是true,对列是false. 我也试过 orig ..
发布时间:2021-11-18 04:40:59 其他开发

Numpy 二进制矩阵 - 获取 True 元素的行和列

我有一个二进制 numpy 2D 数组,比如说, 将 numpy 导入为 nparr = np.array([# 列 0 列 1 列 2[假,假,真],#第0行[对,错,错],#第 1 行[True, True, False], # 第 2 行]) 我想要矩阵中每个 True 元素的行和列: [(0, 2), (1, 0), (2, 0), (2, 1)] 我知道我可以通过迭代做到这一点: ..
发布时间:2021-11-18 04:25:12 其他开发

MATLAB:如何向量乘以两个矩阵数组?

我有两个3维数组,前两个维度代表矩阵,最后一个通过参数空间计数,举个简单的例子 A = repmat([1,2; 3,4], [1 1 4]); (但假设 A(:,:,j) 对于每个 j 都是不同的).如何轻松地执行两个这样的矩阵数组 A 和 B 的 per-j 矩阵乘法? C = A;% pre-allocate, nan(size(A,1), size(B,2)) 会更好但更慢对于 jj ..
发布时间:2021-11-18 04:17:53 其他开发

在没有 Python 循环的情况下使 numpy 数组单调

我有一个一维值数组,它应该是单调的(假设是递减的),但是有一些随机区域的值随索引增加. 我需要一个数组,其中每个区域都被直接在其前面的值替换,以便对结果数组进行排序. 所以如果给定的数组是: a = np.array([10.0, 9.5, 8.0, 7.2, 7.8, 8.0, 7.0, 5.0, 3.0, 2.5, 3.0, 2.0]) 我希望结果是 b = np.array ..
发布时间:2021-11-18 04:15:29 其他开发

有效地减去不同形状的 numpy 数组

使用 numpy 的优秀广播规则,您可以使用 从形状 (5,3) 数组 X 中减去形状 (3,) 数组 v X - v 结果是一个形状为 (5,3) 的数组,其中每一行 i 是差值 X[i] - v. 有没有办法从 X 中减去一个形状 (n,3) 数组 w 以便 w 的每一行都减去形式整个数组 X 没有显式使用循环? 解决方案 您需要使用 None/np.newaxis 组成一 ..
发布时间:2021-11-18 03:42:29 其他开发

用之前的非零值替换向量中的所有零

Matlab/Octave 算法示例: 输入向量:[ 1 0 2 0 7 7 7 0 5 0 0 0 9 ]输出向量: [ 1 1 2 2 7 7 7 7 5 5 5 5 9 ] 该算法非常简单:它遍历向量并用最后一个非零值替换所有零.这看起来微不足道,当用一个缓慢的 for (i=1:length) 循环完成并且能够引用前一个元素 (i-1) 时也是如此,但看起来不可能以快速矢量化形式表达 ..
发布时间:2021-11-18 03:30:50 其他开发

在没有显式循环的情况下构建具有多个自定义索引范围的 numpy 数组

在 Numpy 中,是否有一种 pythonic 方法可以在没有循环的情况下使用来自 array1 和 array2 的自定义范围创建 array3?迭代范围的直接解决方案有效,但由于我的数组遇到数百万个项目,我正在寻找更有效的解决方案(也许也是语法糖). 例如, array1 = np.array([10, 65, 200])array2 = np.array([14, 70, 204] ..
发布时间:2021-11-18 03:28:38 其他开发

求矩阵中一点到矩阵中所有其他点的距离

我有一个矩阵a,我想计算从一个点到所有其他点的距离.所以实际上结果矩阵应该有一个零(在我选择的点上)并且应该显示为围绕该特定点的某种数字圆圈. 这是我已经拥有的,但我似乎无法得到正确的结果. a = [1 2 3 4 5 6 7 8 9 10]对于 i = 2:20a(i,:) = a(i-1,:) + 1;结尾N = 10对于 I = 1:N对于 J = 1:Ndx = a(I,1)-a ..
发布时间:2021-11-18 03:10:27 其他开发

MATLAB 中向量数组的向量范数

在调用 norm 时MATLAB 中的矩阵,它返回所谓的“矩阵范数"(标量值),而不是向量范数数组.有没有什么方法可以不循环利用MATLAB的向量化来获得矩阵中每个向量的范数? 解决方案 您可以使用 按元素算术运算符 和定义为在给定矩阵维度上操作的函数(如 SUM 和 最大).以下是计算矩阵 M 的一些列范数的方法: twoNorm = sqrt(sum(abs(M).^2,1));%# ..
发布时间:2021-11-18 03:00:25 其他开发

MATLAB 中的索引向量效率低下吗?

背景 我的问题是由简单的观察引起的,这在一定程度上破坏了经验丰富的 MATLAB 用户通常持有/做出的信念/假设: MATLAB 在内置函数和基本语言功能(例如索引向量和矩阵)方面进行了很好的优化. MATLAB 中的循环很慢(尽管有 JIT),如果算法可以用原生的“矢量化"方式表达,通常应该避免. 底线:核心 MATLAB 功能是高效的,尝试使用 MATLAB 代码超越它是很 ..
发布时间:2021-11-18 02:54:07 其他开发

以矢量化方式连接给定开始、停止数字的范围数组 - NumPy

我有两个感兴趣的矩阵,第一个是“词袋"矩阵,有两列:文档 ID 和术语 ID.例如: 弓[0:10]出[1]:数组([[ 0, 10],[ 0, 12],[ 0, 19],[ 0, 20],[ 1, 9],[1, 24],[2, 33],[2, 34],[2, 35],[ 3, 2]]) 此外,我有一个“索引"矩阵,其中矩阵中的每一行都包含词袋矩阵中给定文档 ID 的第一行和最后一行的索引.例 ..
发布时间:2021-11-18 02:48:25 其他开发

在返回向量的函数上使用 Numpy Vectorize

numpy.vectorize 将函数 f:a->b 转换为 g:a[]->b[]. 这在 a 和 b 是标量时工作正常,但我想不出为什么它不能将 b 作为 ndarray 或列表,即 f:a->b[] 和 g:a[]->b[][] 例如: 将 numpy 导入为 np定义 f(x):返回 x * np.array([1,1,1,1,1], dtype=np.float32)g = ..
发布时间:2021-11-18 02:14:53 其他开发

重复数组元素的副本:MATLAB 中的运行长度解码

我正在尝试使用“值"数组和“计数器"数组将多个值插入到数组中.例如,如果: a=[1,3,2,5]b=[2,2,1,3] 我想要一些函数的输出 c=somefunction(a,b) 成为 c=[1,1,3,3,2,5,5,5] 其中 a(1) 重复 b(1) 次,a(2) 重复 b(2) 次,等等...... MATLAB 中是否有内置函数可以执行此操作?如果可能,我想避免使用 ..
发布时间:2021-11-18 01:03:54 其他开发

C 中的 ARM Neon:如何在使用内在函数时组合不同的 128 位数据类型?

TLTR 对于 arm 内部函数,如何将 uint8x16_t 类型的 128 位变量输入到需要 uint16x8_t 的函数中? 扩展版 上下文:我有一个灰度图像,每个像素 1 个字节.我想将其缩小 2 倍.对于每个 2x2 输入框,我想取最小像素.在普通 C 中,代码如下所示: for (int y = 0; y 其中行和列都是 2 的倍数.我将“步幅"称为从一个像素到 ..
发布时间:2021-11-17 22:28:42 其他开发

ARM Neon:如何从 uint8x16_t 转换为 uint8x8x2_t?

我最近发现了 vreinterpret{q}_dsttype_srctype 转换运算符.但是,这似乎不支持 此链接(页面底部): 某些内在函数使用以下形式的向量类型数组: xx_t 这些类型被视为包含单个的普通 C 结构名为 val 的元素. 一个示例结构定义是: struct int16x4x2_t{int16x4_t val[2];}; 你知道如何从uint8x1 ..
发布时间:2021-11-17 22:13:12 其他开发

ARM NEON 矢量化失败

我想在我的 ARM cortex-a9 上启用 NEON 向量化,但我在编译时得到了这个输出: “未矢量化:不支持相关 stmt:D.14140_82 = D.14143_77 * D.14141_81" 这是我的循环: void my_mul(float32_t * __restrict data1, float32_t * __restrict data2, float32_t ..
发布时间:2021-11-17 22:10:41 其他开发

SIMD 使用 ARM NEON 程序集对 atan2 进行矢量化

我想使用霓虹灯指令 SIMD 和臂组件计算 4 个点的大小和角度.大多数语言都有一个内置库,在我的例子中是 C++,它计算角度 (atan2) 但只有一对浮点变量(x 和 y).我想利用处理 q 个寄存器的 SIMD 指令来计算 4 个值的向量的 atan2. 精度要求不高,速度更重要. 我已经有一些汇编指令可以计算 4 个浮点寄存器的大小,并且对于我的应用程序具有可接受的精度.q1 ..
发布时间:2021-11-17 21:59:52 其他开发

ARM NEON:比较 128 位值

我有兴趣找到在 Cortex-A9 内核(允许 VFP 指令)上比较存储到 NEON 寄存器(例如 Q0 和 Q3)中的值的最快方法(最低周期数). 到目前为止,我有以下几点: (1) 使用 VFP 浮点比较: vcmp.f64 d0, d6虚拟机 APSR_nzcv,fpscrvcmpeq.f64 d1, d7vmrseq APSR_nzcv,fpscr 如果 64 位“浮点数" ..
发布时间:2021-11-17 21:54:13 其他开发