numpy案例(隨機數生成,索引,修改形狀,修改類型,去重)

一、隨機生成八隻股票兩週的交易日漲幅數據

>>> import numpy as np
>>> stock_change=np.random.normal(loc=0,scale=1,size=(8,10))#這裏用正態分佈隨機數
>>> stock_change
array([[-1.1343391 ,  1.65608029, -0.68222626, -0.4288315 ,  0.19948599,
        -0.61926558,  0.21516773,  0.7767751 , -0.26167027, -0.43091756],
       [-0.29634732,  0.13890544,  0.45824194,  0.3184083 , -1.87233628,
        -0.02544499, -1.7498489 , -0.49005395, -0.21800702, -0.67063429],
       [-1.9517504 ,  0.15462343, -0.08247815, -0.1475269 ,  0.0056942 ,
        -1.12796392,  0.59864058,  2.00443335, -0.44038852,  0.72490669],
       [ 0.26197967,  1.22252265, -0.29807856,  0.16792887, -1.40108093,
         0.86089209, -0.95521308,  1.63804955,  0.57357237,  1.05756125],
       [ 0.79324084,  3.37549996, -0.43210609, -0.16073839,  0.64017597,
        -0.39662389,  1.8220427 , -0.15538366,  0.2457401 ,  0.16393938],
       [ 0.20220074, -1.58643882,  1.52836969,  0.35649477, -1.18283582,
        -0.2627466 , -1.62134852, -0.62051081, -0.03113397, -0.42981914],
       [ 2.24448065,  0.24069295, -2.69817108, -1.60745796,  0.81643552,
        -0.91676992,  1.33626747,  0.20102252,  1.02987241,  0.57122122],
       [-0.03591242, -1.51726478, -0.01696559, -1.96890186,  0.21840141,
        -1.35285592,  0.52658141, -0.64944062, -1.84926774,  1.03067173]])

二、獲取第一個股票的前三個交易日的漲跌幅數據

>>> stock_change[0,0:3]
array([-1.1343391 ,  1.65608029, -0.68222626])#二維數組索引

tips:三維的數組怎麼索引

>>> a1=np.array([[[1,2,3],[4,5,6]],[[7,8,9],[10,11,12]]])
>>> a1
array([[[ 1,  2,  3],
        [ 4,  5,  6]],

       [[ 7,  8,  9],
        [10, 11, 12]]])
>>> #(2,2,3)
>>> a1.shape
(2, 2, 3)
>>> #索引9
>>> a1[1,0,2]
9
>>> a1[1,0,2]=100#把這個位置的數改成100
>>> a1
array([[[  1,   2,   3],
        [  4,   5,   6]],

       [[  7,   8, 100],
        [ 10,  11,  12]]])
>>> 

三、形狀修改(把股票的股票行,日期列反過來變成日期行,股票列)

1.用ndarray.reshape轉換,會發現只是把數據重新分割變成10行8列,並沒有達到我們想要的效果,且返回新的數組,原始數據沒有改

>>> stock_change
array([[-1.1343391 ,  1.65608029, -0.68222626, -0.4288315 ,  0.19948599,
        -0.61926558,  0.21516773,  0.7767751 , -0.26167027, -0.43091756],
       [-0.29634732,  0.13890544,  0.45824194,  0.3184083 , -1.87233628,
        -0.02544499, -1.7498489 , -0.49005395, -0.21800702, -0.67063429],
       [-1.9517504 ,  0.15462343, -0.08247815, -0.1475269 ,  0.0056942 ,
        -1.12796392,  0.59864058,  2.00443335, -0.44038852,  0.72490669],
       [ 0.26197967,  1.22252265, -0.29807856,  0.16792887, -1.40108093,
         0.86089209, -0.95521308,  1.63804955,  0.57357237,  1.05756125],
       [ 0.79324084,  3.37549996, -0.43210609, -0.16073839,  0.64017597,
        -0.39662389,  1.8220427 , -0.15538366,  0.2457401 ,  0.16393938],
       [ 0.20220074, -1.58643882,  1.52836969,  0.35649477, -1.18283582,
        -0.2627466 , -1.62134852, -0.62051081, -0.03113397, -0.42981914],
       [ 2.24448065,  0.24069295, -2.69817108, -1.60745796,  0.81643552,
        -0.91676992,  1.33626747,  0.20102252,  1.02987241,  0.57122122],
       [-0.03591242, -1.51726478, -0.01696559, -1.96890186,  0.21840141,
        -1.35285592,  0.52658141, -0.64944062, -1.84926774,  1.03067173]])
>>> stock_change.shape
(8, 10)
>>> stock_change.reshape((10,8))
array([[-1.1343391 ,  1.65608029, -0.68222626, -0.4288315 ,  0.19948599,
        -0.61926558,  0.21516773,  0.7767751 ],
       [-0.26167027, -0.43091756, -0.29634732,  0.13890544,  0.45824194,
         0.3184083 , -1.87233628, -0.02544499],
       [-1.7498489 , -0.49005395, -0.21800702, -0.67063429, -1.9517504 ,
         0.15462343, -0.08247815, -0.1475269 ],
       [ 0.0056942 , -1.12796392,  0.59864058,  2.00443335, -0.44038852,
         0.72490669,  0.26197967,  1.22252265],
       [-0.29807856,  0.16792887, -1.40108093,  0.86089209, -0.95521308,
         1.63804955,  0.57357237,  1.05756125],
       [ 0.79324084,  3.37549996, -0.43210609, -0.16073839,  0.64017597,
        -0.39662389,  1.8220427 , -0.15538366],
       [ 0.2457401 ,  0.16393938,  0.20220074, -1.58643882,  1.52836969,
         0.35649477, -1.18283582, -0.2627466 ],
       [-1.62134852, -0.62051081, -0.03113397, -0.42981914,  2.24448065,
         0.24069295, -2.69817108, -1.60745796],
       [ 0.81643552, -0.91676992,  1.33626747,  0.20102252,  1.02987241,
         0.57122122, -0.03591242, -1.51726478],
       [-0.01696559, -1.96890186,  0.21840141, -1.35285592,  0.52658141,
        -0.64944062, -1.84926774,  1.03067173]])
>>> stock_change.shape
(8, 10)#原始數組沒有改

2.用ndarray.resize同ndarray.reshape,但沒有返回新的數組且改變原始數組

3.用ndarray.T(轉置)才能達到我們想要的效果。

>>> stock_change.T
array([[-1.1343391 , -0.29634732, -1.9517504 ,  0.26197967,  0.79324084,
         0.20220074,  2.24448065, -0.03591242],
       [ 1.65608029,  0.13890544,  0.15462343,  1.22252265,  3.37549996,
        -1.58643882,  0.24069295, -1.51726478],
       [-0.68222626,  0.45824194, -0.08247815, -0.29807856, -0.43210609,
         1.52836969, -2.69817108, -0.01696559],
       [-0.4288315 ,  0.3184083 , -0.1475269 ,  0.16792887, -0.16073839,
         0.35649477, -1.60745796, -1.96890186],
       [ 0.19948599, -1.87233628,  0.0056942 , -1.40108093,  0.64017597,
        -1.18283582,  0.81643552,  0.21840141],
       [-0.61926558, -0.02544499, -1.12796392,  0.86089209, -0.39662389,
        -0.2627466 , -0.91676992, -1.35285592],
       [ 0.21516773, -1.7498489 ,  0.59864058, -0.95521308,  1.8220427 ,
        -1.62134852,  1.33626747,  0.52658141],
       [ 0.7767751 , -0.49005395,  2.00443335,  1.63804955, -0.15538366,
        -0.62051081,  0.20102252, -0.64944062],
       [-0.26167027, -0.21800702, -0.44038852,  0.57357237,  0.2457401 ,
        -0.03113397,  1.02987241, -1.84926774],
       [-0.43091756, -0.67063429,  0.72490669,  1.05756125,  0.16393938,
        -0.42981914,  0.57122122,  1.03067173]])
>>> stock_change.T.shape
(10, 8)

四、類型修改

用ndarray.astype(type)

>>> stock_change.astype("int32")#修改成整數
array([[-1,  1,  0,  0,  0,  0,  0,  0,  0,  0],
       [ 0,  0,  0,  0, -1,  0, -1,  0,  0,  0],
       [-1,  0,  0,  0,  0, -1,  0,  2,  0,  0],
       [ 0,  1,  0,  0, -1,  0,  0,  1,  0,  1],
       [ 0,  3,  0,  0,  0,  0,  1,  0,  0,  0],
       [ 0, -1,  1,  0, -1,  0, -1,  0,  0,  0],
       [ 2,  0, -2, -1,  0,  0,  1,  0,  1,  0],
       [ 0, -1,  0, -1,  0, -1,  0,  0, -1,  1]])
>>> stock_change.tostring()#本地序列化
b'\x0eX\xd5\xc2@&\xf2\xbf\xdcFz\x0bN\x7f\xfa?\xc6\xe9\x18*\xcc\xd4\xe5\xbf\x811\xed\xa9\xf9q\xdb\xbf|\xa1\x94\xc8\xc1\x88\xc9?\xa4\x84D\x0e\x06\xd1\xe3\xbfr\xc3Y\xb5\x9d\x8a\xcb?\x0fS\xa1sW\xdb\xe8?A\xd9\x95\xa94\xbf\xd0\xbfb\xc3\':\'\x94\xdb\xbf\xe7\x99\xd1\xbdZ\xf7\xd2\xbf\x02\xa3%I\xa7\xc7\xc1?\xa8\x18!\x04\xd6S\xdd?\xba\xf6\xd96\xcd`\xd4?\x07z\xa4\xe2\x16\xf5\xfd\xbfR!\xd7*@\x0e\x9a\xbf\xf7\x94\xf7\x8fa\xff\xfb\xbf\x9d3u=\x0b]\xdf\xbfqR\xb8o\xa7\xe7\xcb\xbf\x0f0\xd3\x0c\xd6u\xe5\xbf\xdf\xd4\x7f\xa0^:\xff\xbf\xb1nMW\xb3\xca\xc3?\x8a\xaa\xb8\xd1I\x1d\xb5\xbf\x02\xde@\\)\xe2\xc2\xbf\xd7`\xbcn\xceRw?\x15\xd3}\xe4#\x0c\xf2\xbf\xca\xbf\x03J\x10(\xe3?\x1b\x91\xa5Z\x14\t\x00@\xfdO\x93OS/\xdc\xbf\xe5\x80\xb9\x84o2\xe7?\xdf\x80\xe9cF\xc4\xd0?\xfe\x11\x88\xe9s\x8f\xf3?\xd1\x04\xfe\x17\xb8\x13\xd3\xbf9B\xc1n\xb1~\xc5?\xa6\x92\xda\xd6\xd3j\xf6\xbfA;,\x90m\x8c\xeb?\xa0\x17\xae\x03\x1b\x91\xee\xbf\x8c\x03\xadps5\xfa?hFpr\xb4Z\xe2?;\x1f8W\xc5\xeb\xf0?\xe6\x86\xb6\x9f:b\xe9?\xa6#\xef\x1e\x06\x01\x0b@V\xd3xL\xa0\xa7\xdb\xbf\xac\xa0\x0cY\x13\x93\xc4\xbfX8\xbbOR|\xe4?\xd7\x7f2\'Ib\xd9\xbfA%T@\x16\'\xfd?\x81x\x80\xa7\x9c\xe3\xc3\xbf)\x1f\x0f\\it\xcf?\xd6\x9b\x065\xf7\xfb\xc4?,,<\xc2\xb6\xe1\xc9?\xbb\xe2W\xac\rb\xf9\xbf\x9a/\xd8\xc53t\xf8?!\x15\x92o\xcf\xd0\xd6?\x87_\x02@\xe5\xec\xf2\xbfZ\x94P"\xd7\xd0\xd0\xbf\xbb8\x07%\x0b\xf1\xf9\xbf\x15\xceN}9\xdb\xe3\xbf\x8e\xa26\x83\x95\xe1\x9f\xbf\xbb\xd8)\x1e(\x82\xdb\xbf\xe7\xbd\x04E\xb2\xf4\x01@\xd4F\n\xcd\x06\xcf\xce?\xb8\xe6\x0c\xb8\xda\x95\x05\xc0\xca\xd5l\xd5%\xb8\xf9\xbf\xdf\xbd\x1cb= \xea?\x8b\x83\xc5\xdc-V\xed\xbf\xc9%\xee\x00Za\xf5?\x9f\xe4\x81\x1c\x1b\xbb\xc9?pM\xf9~[z\xf0?f\r`\xb9qG\xe2?\x0c\xc1\x04\xb5\x1cc\xa2\xbf\xa7\x88cn\xb7F\xf8\xbf\xa1\xae{pm_\x91\xbf`\x80\xec<\x9f\x80\xff\xbf\x01I7\xc6\x93\xf4\xcb?<7\x07@L\xa5\xf5\xbf\x97\xe8DD\xc1\xd9\xe0?\xa9\x10+\xb17\xc8\xe4\xbf\xbc\xa7\xa6\xc5\x99\x96\xfd\xbf\xafv\x92\xa3\xa1}\xf0?'
>>> 

五、去重
用numpy.unique

>>> temp=np.array([[1,2,3,4],[3,4,5,6]])
>>> temp
array([[1, 2, 3, 4],
       [3, 4, 5, 6]])
'''>>> set(temp)#直接用set會報錯,set只能用在一維數組
Traceback (most recent call last):
  ~~File "<pyshell#26>", line 1, in <module>
    set(temp)
TypeError: unhashable type: 'numpy.ndarray'~~ 
'''
>>> temp
array([[1, 2, 3, 4],
       [3, 4, 5, 6]])
>>> set(temp.flatten())
{1, 2, 3, 4, 5, 6}####當然你可以把它降維之後再用set
>>> np.unique(temp)#一般用這個
array([1, 2, 3, 4, 5, 6])

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章