python - Python 矩阵除法
问题描述
我有一个关于按元素划分矩阵的问题,我的意思是我希望第一个矩阵(foto_dcp,参见代码)的元素 [i,j] 除以第二个矩阵(Q)的元素[i,j]。
一些背景信息:我从存储中加载了图像。我将每个像素的单色值存储在一个名为“pixelMatrix”的矩阵中 这个命令将大矩阵(128x128)变成更小的矩阵(8x8)
foto_dct = skimage.util.view_as_blocks(pixelMatrix, block_shape=(8, 8))
现在,在这样做之后,我需要将 foto_dct 中的每个矩阵除以一个不同的矩阵(在此代码中称为“Q”)元素。
for x in foto_dct:
for i in range(8):
for j in range(8):
x[i,j] = x[i,j] / Q[i,j]
问题是我得到不正确的结果。这是矩阵“Q”:
[[ 16 11 10 16 24 40 51 61]
[ 12 12 14 19 26 58 60 55]
[ 14 13 16 24 40 57 69 56]
[ 14 17 22 29 51 87 80 62]
[ 18 22 37 56 68 109 103 77]
[ 24 35 55 64 81 104 113 92]
[ 49 64 78 87 103 121 120 101]
[ 72 92 95 98 112 100 103 99]]
这是一个示例矩阵(foto_dct[3,3],虽然我已经对其进行了一些操作,矩阵的第 3 列,矩阵的第 3 行,如果您还记得第 1 步的话。)
[[613 250 -86 64 -63 59 -44 24]
[ 38 -84 50 -57 54 -47 35 -19]
[-16 4 -4 7 -5 4 -3 1]
[ 10 -18 19 -20 21 -20 16 -9]
[-17 19 -18 16 -14 11 -7 4]
[ -7 9 -10 12 -13 11 -9 5]
[-11 15 -14 15 -14 11 -9 5]
[ -1 2 -4 5 -5 4 -3 2]]
这就是我在除法后得到的:
[[43 17 -6 4 -4 4 -3 1]
[ 2 -4 2 -3 3 -2 2 -1]
[ 0 0 0 0 0 0 0 0]
[ 0 0 0 0 0 0 0 0]
[ 0 0 0 0 0 0 0 0]
[ 0 0 0 0 0 0 0 0]
[ 0 0 0 0 0 0 0 0]
[ 0 0 0 0 0 0 0 0]]
如您所见,例如取元素 [0,0] = 613,因此除法后我们应该得到 [0,0] = 613/16 = 38.3125 (您可以看到它也自动四舍五入?)顺便说一句,我试着改变
x[i,j] = x[i,j] / Q[i,j]
经过
x[i,j] = x[i,j] / 2
并得到正确(尽管四舍五入)的结果。所以这是 Q[i,j]
我也尝试过这样做:
for x in foto_dct:
x = np.divide(x,Q)
但这返回了原始矩阵,没有做任何事情,甚至没有返回错误代码,即使它应该按元素划分。谁能帮我吗?
解决方案
推荐阅读
- c# - Windows 窗体 C# 中的控制台
- r - IF(AND 公式使用 R
- python - 集合如何在python内部避免重复?
- flutter - 覆盖自定义颤振小部件
- html - CSS Safari 14 出现问题,当包含在弹性框内的网格中时,子元素会爆炸
- javascript - 删除深层嵌套一维数组中的所有嵌套子节点
- reactjs - 如何检查点击事件是否发生在特定元素内部或外部
- asp.net-core - MVC Net Core 3.1:创建和下载 PDF 文件的工具
- node.js - 如何在 nodejs 14.15 中运行 WebAssembly
- java - GSON; 如何处理END_DOCUMENT?