我尝试使用numpy(并且只有numpy)使用y
中的边缘来分割矢量cutoffs
。 y
和g
被定义为列向量,但a
作为行向量返回。运行g += a.transpose()
会通过引入100x100阵列生成形状一致性错误(在下面复制)。必须有一种更优雅的方式来完成这项工作。感谢。
y = np.random.uniform(0,1,100)
cutoffs = np.random.uniform(0,1,3)
cutoffs.sort()
g = np.zeros( y.size )
for c in np.hstack( [ cutoffs , 1. ] ):
a = np.array( [ y < c ] )
g += a.transpose()
Traceback (most recent call last):
File "<stdin>", line 3, in <module>
ValueError: non-broadcastable output operand with shape (100,) doesn't match the broadcast shape (100,100)
答案 0 :(得分:1)
使用
a = (y < c).reshape(-1)
g += a