pythonで配列の1つ目と2つ目の要素を条件に3つ目の要素を決定する。


2次元リストがあり、1つ目の要素と2つ目の要素を条件に3つ目に入れる要素を決定したいです。

[code]

    li=np.array([-1,-2]
                [ 1,-2]
                [-1, 2]
                [ 1, 2]
                 )
    
[/code]

具体的には  
(1つ目の要素 < 0) and (2つ目の要素 < 0) なら3つ目に1を  
(1つ目の要素 > 0) and (2つ目の要素 < 0) なら3つ目に2を  
(1つ目の要素 < 0) and (2つ目の要素 > 0) なら3つ目に3を  
(1つ目の要素 > 0) and (2つ目の要素 > 0) なら3つ目に4を  
追加し、

[code]

    result=[[-1,-2, 1]
            [ 1,-2, 2]
            [-1, 2, 3]
            [ 1, 2, 4]]
    
[/code]

となるようなものです。

内包表現やシーケンス操作(filterやmap、where)を用いる方法で行いたいです。

よろしくお願いいたします。




これでどうでしょう

[code]

    >>> import numpy as np
    >>> li = np.array([[-1, -2],
    ...                [ 1, -2],
    ...                [-1,  2],
    ...                [ 1,  2]])
    >>> n = li.shape[0]
    >>> li2 = np.hstack([li, np.zeros((n,1))])
    >>> li2
    array([[-1., -2.,  0.],
           [ 1., -2.,  0.],
           [-1.,  2.,  0.],
           [ 1.,  2.,  0.]])
    >>> li2[np.where((li2[:,0]<0) & (li2[:,1]<0)),2] = 1
    >>> li2[np.where((li2[:,0]>0) & (li2[:,1]<0)),2] = 2
    >>> li2[np.where((li2[:,0]<0) & (li2[:,1]>0)),2] = 3
    >>> li2[np.where((li2[:,0]>0) & (li2[:,1]>0)),2] = 4
    >>> li2
    array([[-1., -2.,  1.],
           [ 1., -2.,  2.],
           [-1.,  2.,  3.],
           [ 1.,  2.,  4.]])
    
[/code]

