如何解决用另一个数组处理一个numpy数组
我正在尝试使用方括号和':',同时尝试使用其他索引进行二维索引 因此,如果有人能理顺我,我将感到非常高兴
我有一个灰度图像 BluredFlip形状是:(480,640) 那我就用
minCoords = np.argmin(BlurredFlip,axis=0)
创建了一个一维数组,毫无疑问,第一行的每一列都有最小值,例如
minCoords = [292 289 289 287 287 .......
现在我想将超出此行值的每个像素设置为黑色-不使用python中的循环 等同于
BlurredFlip[292:479,0] = 0
BlurredFlip[289:479,1] = 0
BlurredFlip[289:479,2] = 0
BlurredFlip[287:479,3] = 0
and so on.
以伪代码
for col in 1 to maxcol
BlurredFlip[minCoords[col]:imageheight,col] = 0
我似乎无法像这样两次引用该列。 但是我可以告诉您许多方法来获取无用的错误“ TypeError:只有整数标量数组才能转换为标量索引”
谢谢您的启发:)
解决方法
我认为我找到了不使用for循环的解决方案。如果这是个问题,可能会节省您的时间,但不会节省存储空间。给定一个2D数组A
和一个1D数组row
。 row
的维数是A
的列数。对于列i
,我们将行号大于row[i]
的条目设置为零。考虑以下代码:
import numpy as np
AA = np.arange(16).reshape(4,4)+1;
row = np.asarray([0,1,2,3]);
rowidx,colidx = np.indices(AA.shape);
rowmask = rowidx > row;
AA[rowmask] = 0;
输出为
AA = array([[ 1,3,4],[ 0,6,7,8],11,12],16]])
2D数组AA
的下三角部分已设置为零。魔术发生在创建遮罩的rowmask = rowidx > row
行中。其余的很简单。
针对您的情况,解决方案是
rowidx,colidx = np.indices(BlurredFlip)
rowmask = rowidx > minCoords
BlurredFlip[rowmask] = 0
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。