gpt4 book ai didi

python - 掩码时 Numpy 数组维度丢失

转载 作者:太空狗 更新时间:2023-10-29 17:40:46 25 4
gpt4 key购买 nike

我想选择数组的某些元素并根据这些值执行加权平均计算。但是,使用过滤条件会破坏数组的原始结构。形状为(2, 2, 3, 2)arr 变成一维数组。这对我没有用,因为并非所有这些元素都需要稍后相互组合(但它们的子数组)。我怎样才能避免这种扁平化?

>>> arr = np.asarray([ [[[1, 11], [2, 22], [3, 33]], [[4, 44], [5, 55], [6, 66]]], [ [[7, 77], [8, 88], [9, 99]], [[0, 32], [1, 33], [2, 34] ]] ])
>>> arr
array([[[[ 1, 11],
[ 2, 22],
[ 3, 33]],

[[ 4, 44],
[ 5, 55],
[ 6, 66]]],


[[[ 7, 77],
[ 8, 88],
[ 9, 99]],

[[ 0, 32],
[ 1, 33],
[ 2, 34]]]])
>>> arr.shape
(2, 2, 3, 2)
>>> arr[arr>3]
array([11, 22, 33, 4, 44, 5, 55, 6, 66, 7, 77, 8, 88, 9, 99, 32, 33,
34])
>>> arr[arr>3].shape
(18,)

最佳答案

检查 numpy.where

http://docs.scipy.org/doc/numpy/reference/generated/numpy.where.html

要保持相同的维度,您将需要一个填充值。在下面的示例中,我使用 0,但您也可以使用 np.nan

np.where(arr>3, arr, 0)

返回

array([[[[ 0, 11],
[ 0, 22],
[ 0, 33]],

[[ 4, 44],
[ 5, 55],
[ 6, 66]]],


[[[ 7, 77],
[ 8, 88],
[ 9, 99]],

[[ 0, 32],
[ 0, 33],
[ 0, 34]]]])

关于python - 掩码时 Numpy 数组维度丢失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29046162/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com