[英]Python - Is there a quick method with Numpy for matrix multiplication
嘿,我有一个问题。 我目前已经在 Numba 中编写了部分代码。 对于我的二进制矩阵中的每个单独元素,应采用其 3x3 邻域 [i-1: i + 2, j-2: j + 2]。 我将此邻域乘以矩阵 [[64, 128, 1], [32, 0, 2], [16, 8, 4]] 并形成总和。 我知道 Numba 在某些地方与 Numpy 相处得不是很好。 是否有 Numpy function 可以对我的 NxM 矩阵中的所有元素完全执行此 function ? 就我而言,结果可以作为中间结果保存在另一个矩阵中,然后使用索引调用。
for i in prange(1, h - 1):
for j in range(1, w - 1):
neighbor = lastResult[i - 1 : i + 2, j - 1 : j + 2]
x = sum(nb * pattern)
先感谢您。
也许像这样缩放和添加?
import numpy as np
a = np.random.randint(2, size=(10, 10))
print(a)
s = slice(None, -2)
t = slice(1, -1)
u = slice(2, None)
print(
64 * a[s, s] + 128 * a[s, t] + 1 * a[s, u] +
32 * a[t, s] + 2 * a[t, u] +
16 * a[u, s] + 8 * a[u, t] + 4 * a[u, u]
)
演示 output:
[[0 0 1 0 1 0 0 1 1 0]
[0 0 0 1 1 0 0 1 0 1]
[1 1 1 0 0 0 0 1 1 0]
[0 1 1 0 1 0 0 0 0 1]
[0 1 1 1 0 0 0 1 0 1]
[1 1 1 1 1 1 1 1 0 0]
[0 0 1 0 1 1 0 0 1 0]
[1 0 0 1 0 0 0 0 1 1]
[1 1 1 1 0 0 0 0 0 1]
[0 1 1 1 1 1 1 0 1 1]]
[[ 29 154 83 160 96 7 141 250]
[ 46 57 181 200 80 3 130 101]
[207 252 122 16 32 5 137 214]
[159 254 125 188 92 30 24 51]
[167 235 246 110 58 51 164 105]
[211 197 235 211 225 225 198 76]
[ 61 158 89 177 192 64 3 134]
[110 63 188 124 28 24 21 143]]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.