【发布时间】:2014-12-06 07:13:03
【问题描述】:
我想我正在寻找与sum() 相反的东西。我们开始:
x = array([
[False, False, False, False, False],
[ True, False, False, False, False],
[ True, True, False, False, False],
[ True, True, True, False, False]])
x.sum(axis=1)
Out: array([0, 1, 2, 3])
所以我想走相反的方向:从[0,1,2,3] 到像x 这样的数组(我可以在x 中指定我想要的列数,当然,在它上面是5)。
理想情况下,该解决方案也应该适用于更高的维度,当然我不想在 Python 中循环,因为输入可能比这个示例更长。也就是说,这是一个使用循环的解决方案:
s = np.array([0, 1, 2, 3])
y = np.zeros((len(s), 5), np.bool)
for row,col in enumerate(s):
y[row,0:col] = True
【问题讨论】:
-
@WarrenWeckesser:正确!我知道如何从这里到那里......但在这里有点卡住了。
-
在您的循环解决方案中,看起来 输入 是
x,并且您创建了y,但之前您说要从 [0, 1 , 2, 3] tox(即x是输出)。从 [0,1,2,3] 到更大的布尔数组的操作不是你想要的吗? -
如果是这样,您可以像我在stackoverflow.com/questions/26269893/… 中所做的那样,但将比较中的相等性更改为
arange(A.max()+1)到<(如@DSM 的答案)。 -
@WarrenWeckesser:是的,我在问题中输入的循环代码有点混乱,所以我更新了它,希望让它更清晰/自包含/非自引用。
标签: python numpy multidimensional-array scipy