【发布时间】:2020-05-26 02:35:18
【问题描述】:
我有一个 2D numpy 数组,每一行都填充有(下面的示例使用 -1)。
对于每一行,我想选择一个随机数,不包括填充,并且还获取每行的非填充值的数量,只使用 numpy 操作。
这是一个最小的例子。我为垫选择了-1,但垫可以是任何负整数。
import numpy as np
numList = [[0, 32, 84, 93, 1023, -1], [0, 23, 33, 45, -1, -1], [0, 10, 15, 21, 24, 25], [0, 23, -1, -1, -1, -1], [0 , 13, 33, 34, -1, -1]]
numArray = np.array(numList)
numArray
array([[ 0, 32, 84, 93, 1023, -1],
[ 0, 23, 33, 45, -1, -1],
[ 0, 10, 15, 21, 24, 25],
[ 0, 23, -1, -1, -1, -1],
[ 0, 13, 33, 34, -1, -1]])
对于长度,输出应该是这样的
LengthsResults
[5, 4, 6, 2, 4].
这是一个示例输出,用于为每一行选择一个随机的非填充数字。
randomNonPad
[84, 45, 0, 0, 34]
编辑:
我正在查看 np.where,它可以让您根据条件过滤掉 numpy 数组的一部分,以及 numpy 随机选择,它可以让您为数组选择一个随机数。我不确定如何处理 np.where ,但似乎您可以将其更改为某些内容,但我不确定是什么,或者即使它是正确的方法。对于 python,您可以从一个列表开始,并将其附加到任意长度,但对于 numpy,您需要提前确定数组长度。
【问题讨论】:
-
您能否展示您的尝试并解释为什么您没有成功?