重温《利用Python进行数据分析》-第4章-3

数组转置和轴对换,数组不仅有transpose方法,还有一个特殊的T属性:

In [99]: arr=np.arange(15).reshape((3,5))

In [100]: arr
Out[100]:
array([[ 0,  1,  2,  3,  4],
       [ 5,  6,  7,  8,  9],
       [10, 11, 12, 13, 14]])

In [101]: arr.T
Out[101]:
array([[ 0,  5, 10],
       [ 1,  6, 11],
       [ 2,  7, 12],
       [ 3,  8, 13],
       [ 4,  9, 14]])

 

通用函数

In [102]: arr=np.arange(10)

In [103]: arr
Out[103]: array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

In [104]: np.sqrt(arr)
Out[104]:
array([0.        , 1.        , 1.41421356, 1.73205081, 2.        ,
       2.23606798, 2.44948974, 2.64575131, 2.82842712, 3.        ])

  

另外一些函数add或maximum接受2个数组,并返回一个结果数组

In [109]: x=np.random.randn(9)

In [110]: y=np.random.randn(9)

In [111]: np.maximum(x,y)
Out[111]:
array([ 0.82602995, -0.38349433,  1.17788379,  0.60382314,  0.7211279 ,
        0.04750648,  0.13972083,  0.54813441,  1.25338131])

  

 

 numpy.where函数是三元表达式x if condition else y的矢量化版本。

In [141]: resule=np.where(cond,xarr,yarr)

In [142]: resule
Out[142]: array([1.1, 2.2, 1.3, 1.4, 2.5])

np.where的第二、第三个参数不必是数组,可以是标量值

In [144]: arr=np.random.randn(4,4)

In [145]: arr
Out[145]:
array([[ 0.81510199,  0.87467714, -1.36632713,  0.03928432],
       [ 2.15815895, -0.20202589,  0.89246021, -0.08146625],
       [-0.38186056, -0.33593038, -1.47024412, -1.2114787 ],
       [ 0.71705331,  0.7387612 , -0.30762999, -0.25966833]])

In [146]: np.where(arr>0,2,-2)

  

  

posted @ 2019-06-30 16:36  chefli  阅读(149)  评论(0)    收藏  举报