- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 2-D 数组制作 3-D 的 Hadamard 乘积。 2 维数组共享 3 维数组前两个轴的形状,并且应该沿着第 2 轴(即第 3 个轴)移动以进行乘法,这意味着:先与切片 0 进行哈达玛积,然后与切片 1 进行哈达玛积,等等(参见图片、原理图)。
原始 3-D 数组是一个 opencv
图像,因此具有 f.e. 的形状。 (1080, 1920, 3)
。二维数组是该图像的一个切片,因此形状为 (1080, 1920)
有没有一种方法可以在不使用循环或单独指定每个切片的情况下执行此操作?或者循环是这里的方法吗?
有效的是:
img_new = np.zeros(shape=img.shape[:2])
img_new[0] = (img[:, :, 1] * img[:, :, 0])[0]
img_new[1] = (img[:, :, 2] * img[:, :, 0])[1]
但是,我不希望在代码中进行两次此计算。
我已经尝试过:
img_new = np.multiply(img_cvt[:, :, 1:3], img[:, :, 0])
尽管这在使用二维和一维数组时有效
>>> a = np.array(((1,2),(3,4)))
>>> b = np.array((5,8))
>>> np.multiply(a,b)
array([[ 5, 16],
[15, 32]])
在 3-D/2-D 情况下会出现广播错误:
ValueError: operands could not be broadcast together with shapes (1080,1920,2) (1080,1920)
同样适用于np.apply_along_axis
:
img_new = np.apply_along_axis(np.multiply, 2, img[:, :, 1:3], img[:, :, 0])
这会产生以下结果:
ValueError: operands could not be broadcast together with shapes (2,) (1080,1920)
但我想这行不通,因为它是为一维函数设计的......
最佳答案
看看如何 broadcasting作品。本质上,您可以附加一个轴来执行元素明智的操作,例如这有效
import numpy as np
a = np.random.rand(10, 3)
b = np.random.rand(10, 3, 2)
c = b * a[..., np.newaxis] # make a shape 10 x 3 x 1
关于python - 如何用numpy制作沿轴的Hadamard积?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53908051/
我正在尝试为 Hadamard matrix 编译此代码一代。谁能告诉我为什么这段代码没有被执行吗? #include #include #include main() { int H_SIZE
这是我想要做的:我有两个矩阵 A 和 B,维度分别为 N x k1 和 N x k2。我现在想将矩阵 A 的每一列与 B 逐点相乘。 实现一在 for 循环中执行此操作。 出于速度优化的目的,我考虑过
numpy,一维数组垂直堆栈上的 Hadmard 乘积比循环一维数组列表并在每个数组上执行 Hadamard(按元素)乘积要快得多(这是有道理的,无论如何我都测试过) . 我有一种情况需要在一组 nu
我有两个密集矩阵 A和 B ,并且它们中的每一个都有一个大小为 3e5x100 .另一个稀疏二进制矩阵,C , 尺寸 3e5x3e5 .我想找到以下数量:C ∘ (AB') ,其中 ∘是 Hadama
我正在尝试构建类似于 Hadamard matrix 的东西递归地,我需要一些帮助。我在网上没有找到任何递归执行此操作的解决方案。 如果有人知道某件事或知道解决方案,并且可以友善地将其发布在这里,这对
编辑 您可以在 Github 上查看我的实现:https://github.com/Sheljohn/WalshHadamard 我正在寻找sequence-ordered Fast Walsh Ha
Tensorflow 具有以下功能: tf.matmul 将两个向量相乘并产生一个标量。 但是,我需要做以下事情: # dense dim: (?,227) dense_part = tf.nn.r
我试图在训练样本中引入稀疏性。我的数据矩阵的大小为(比如说)NxP,我想通过一个层(keras 层)传递它,该层的权重与输入大小相同。即可训练权重矩阵 W 的形状为 NxP。我想对这一层进行输入矩阵的
我正在使用 SymPy做线性代数。我想对两个矩阵执行逐元素乘法 ( Hadamard product )。 例如, sympy.MatrixSymbol('X', 4, 3) [operator/me
我正在使用 SymPy做线性代数。我想对两个矩阵执行逐元素乘法 ( Hadamard product )。 例如, sympy.MatrixSymbol('X', 4, 3) [operator/me
此代码将扩频因子作为输入,并将输出作为哈达玛矩阵。例如,如果扩频因子为 4,则哈达玛矩阵将为 4x4。谁能告诉我如何递归地编写它。 #include int main() { int m =
给你一个整数 N,其中 N <=100。是否存在大小为 NxN 的 Hadamard 矩阵,使得: 矩阵的每个元素都是 1 或 -1。 任意两行对应元素的乘积之和为零,即对于任意a <= N和b <=
我有两个矩阵 a = np.matrix([[1,2], [3,4]]) b = np.matrix([[5,6], [7,8]]) 我想得到元素乘积,[[1*5,2*6], [3*7,4*8]],等
我有一个四阶张量 A(比如索引 (a, b, i, j))和一个二阶张量 B(比如索引 (i, j)),我想计算一种 Hadamard 乘法他们中的。 也就是说,如果我们称产品为 C,我想要 C[a,
是否可以使用 Apple 的 Metal Performance Shaders 执行 Hadamard 产品?我看到可以使用 this 执行普通矩阵乘法,但我特别在寻找逐元素乘法,或者一种构造乘法的
我想用 Hadamard 变换替换 JPEG 格式的离散余弦变换。但我不知道在原始算法中必须添加/删除/更改哪个阶段。 据我了解,没有霍夫曼编码的 JPEG 算法如下: 图像分割为 8x8 不重叠块;
我正在寻找 Julia 中元素矩阵乘法的就地实现,又名 Schur 乘积,又名 Hadamard 乘积。 它可以通过 A .* B 分配来执行,但我不能在每次执行此操作时分配额外的内存。 当然我可以自
如果我在导入了 numpy 的 python 代码中看到以下行: c = a * b 确定此操作是作为 Hadamard(逐元素)还是点积(逐点)操作执行的最简单和最实用的方法是什么? 对于 Hada
这个问题已经有答案了: correct way to return two dimensional array from a function c (7 个回答) 已关闭 4 年前。 我尝试使用两个
我是一名优秀的程序员,十分优秀!