Scipy:将分区数组分成3个子数组

时间:2015-11-30 15:14:04

标签: python arrays numpy scipy

我试图弄清楚是否有一个numpy / scipy函数可以使用某个规则将数组有效地分割成子数组。

我的问题如下: 我有一个nxn矩阵,我们称之为W.我有一个向量h。 我现在想将W的列向量分成3个数组:

  • W_pos,其中>对于来自W_pos
  • 的所有向量,0为0
  • W_null,其中= 0表示来自W_null的所有向量
  • W_neg,其中<对于来自W_neg
  • 的所有向量,0为0

现在我这样做,这是有效的,但我觉得效率不高:

    nonzero_indices = (sp.isclose(sp.dot(h_k.T, W),0, 10e-12) == False)
    self.W_null = W[:,~nonzero_indices]

    W_nonzero = W[:,nonzero_indices]
    pos_indices = (sp.dot(h_k.T, W_nonzero) > 0)
    W_pos = W_nonzero[:,pos_indices]
    W_neg = W_nonzero[:,~pos_indices]

有更好的方法吗?感谢您的帮助,如果有什么不清楚请告诉我。 干杯

1 个答案:

答案 0 :(得分:2)

w=np.random.random((10,10))-0.5 # example array

wneg = w[w<0]

wzero = w[w==0]

wpos = w[w>0]