2
This post标识了我想禁用的“功能”。
当前numpy的行为:禁用numpy花哨索引和分配?
>>> a = arange(10)
>>> a[a>5] = arange(10)
array([0, 1, 2, 3, 4, 5, 0, 1, 2, 3])
这是一个问题的原因是:说我想要一个数组有断点的两侧(例如,用于制作“破幂律”或两个不同的价值观一些其他简单的分段功能)。我可能会不小心做这样的事情:
>>> x = empty(10)
>>> a = arange(10)
>>> x[a<=5] = 0 # this is fine
>>> x[a>5] = a**2 # this is not
# but what I really meant is this
>>> x[a>5] = a[a>5]**2
第一种行为,x[a>5] = a**2
得到的东西我会有悖常理考虑 - 左侧和右侧的形状不同意和右侧是不是标量,但numpy的让我做这个任务。正如另一篇文章所指出的,x[5:]=a**2
是不允许的。
所以,我的问题:有没有办法让x[a>5] = a**2
筹集Exception
而不是执行任务?我非常担心我的代码中隐藏了拼写错误,因为我之前从未怀疑过这种行为。
酷,这是一个不错的解决方法 - 我现在开始在我的代码中使用它。毕竟...显式>隐式... – keflavich 2012-03-28 16:15:11