用另一个数组操作一个 numpy 数组
manipulating a numpy array with another array
我正在用括号和“:”做我的头,同时尝试用另一个索引做二维索引
所以如果有人能理顺我,我会很高兴
我有一张灰度图
BlurredFlip 形状是:(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: only integer scalar arrays can be converted to a scalar index"
感谢您的启发:)
我想我找到了一个不使用 for-loop 的解决方案。如果这是一个问题,它可能会节省您的时间,但不会节省存储空间。给定一个二维数组 A
和一个一维数组 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, 2, 3, 4],
[ 0, 6, 7, 8],
[ 0, 0, 11, 12],
[ 0, 0, 0, 16]])
二维数组的下三角部分AA
已设置为零。奇迹发生在 rowmask = rowidx > row
行,它创建了掩码。剩下的就直说了。
对于你的情况,解决方案是
rowidx,colidx = np.indices(BlurredFlip)
rowmask = rowidx > minCoords
BlurredFlip[rowmask] = 0
我正在用括号和“:”做我的头,同时尝试用另一个索引做二维索引 所以如果有人能理顺我,我会很高兴
我有一张灰度图 BlurredFlip 形状是:(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: only integer scalar arrays can be converted to a scalar index"
感谢您的启发:)
我想我找到了一个不使用 for-loop 的解决方案。如果这是一个问题,它可能会节省您的时间,但不会节省存储空间。给定一个二维数组 A
和一个一维数组 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, 2, 3, 4],
[ 0, 6, 7, 8],
[ 0, 0, 11, 12],
[ 0, 0, 0, 16]])
二维数组的下三角部分AA
已设置为零。奇迹发生在 rowmask = rowidx > row
行,它创建了掩码。剩下的就直说了。
对于你的情况,解决方案是
rowidx,colidx = np.indices(BlurredFlip)
rowmask = rowidx > minCoords
BlurredFlip[rowmask] = 0