一.numpy①

一.numpy①

文章中所有的都是在ipython環境下
文章中的np是因爲import numpy as np

1.ndarray對象可以對數組的整塊數據執行數學運算。

data
array([[ 0.9321, -0.321 , -0.3432],
       [ 0.5451,  0.2546,  0.9564]])
data*10
array([[ 9.321, -3.21 , -3.432],
       [ 5.451,  2.546,  9.564]])

ndarray是一個同構數據的多維容器,其實就是裏面所有的元素都必須市同種類型。ndarray有兩個屬性shape(它是一個表示維度大小的元祖)、dtype(它是表示數據的類型的)

In [22]: arr3.shape
Out[22]: (2, 3)

In [23]: arr3.dtype
Out[23]: dtype('float64')

2.創建ndarray

使用array創建
import numpy
data1=[6,7.5,8,0,1]
arr1=np.array(data1)
arr1
array([6.,7.5,8.,0.,1.])
使用zeros創建
In [25]: np.zeros(10)
Out[25]: array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0.])

In [26]: np.zeros((3,8))
Out[26]:
array([[0., 0., 0., 0., 0., 0., 0., 0.],
       [0., 0., 0., 0., 0., 0., 0., 0.],
       [0., 0., 0., 0., 0., 0., 0., 0.]])

zeros創建的是一個指定長度和形狀的全爲0的數組。

使用ones創建
In [27]: np.ones(10)
Out[27]: array([1., 1., 1., 1., 1., 1., 1., 1., 1., 1.])

In [28]: np.ones((3,8))
Out[28]:
array([[1., 1., 1., 1., 1., 1., 1., 1.],
       [1., 1., 1., 1., 1., 1., 1., 1.],
       [1., 1., 1., 1., 1., 1., 1., 1.]])

ones創建的是一個指定長度和形狀的全爲1的數組。

總結使用ones和zeros創建的方法相似。

使用empty創建
In [33]: np.empty((2,3,2))
Out[33]:
array([[[0., 0.],
        [0., 0.],
        [0., 0.]],

       [[0., 0.],
        [0., 0.],
        [0., 0.]]])

創建方法和前面兩種相同,他是創建一個沒有具體值的數組。不過我試了幾次之都是“0.”,可能是我初學沒懂其中的意義。

可以結合python的函數arange創建
In [34]: np.arange(10)
Out[34]: array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
其中在沒有特別指出數據類型的情況下,創建的數據類型都是float(64)
In [35]: data5=np.array([1,2,3],dtype=np.float64)

In [36]: data6=np.array([1,2,3],dtype=np.int32)

In [37]: data5
Out[37]: array([1., 2., 3.])

In [38]: data6
Out[38]: array([1, 2, 3])

可以通過astype將數據類型轉換過來

In [39]: data5
Out[39]: array([1., 2., 3.])

In [40]: data7=data5.astype(np.float64)

In [41]: data7
Out[41]: array([1., 2., 3.])

ndarray可以切片

In [42]: np.arange(10)
Out[42]: array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

In [43]: data10=np.arange(10)

In [44]: data10[5]
Out[44]: 5

In [45]: data10[5:8]
Out[45]: array([5, 6, 7])

In [46]: data10[5:8]=12

In [47]: data10
Out[47]: array([ 0,  1,  2,  3,  4, 12, 12, 12,  8,  9])

In [48]: data11=data10[5:8]

In [49]: data11[1]=11111

In [50]: data10
Out[50]:
array([    0,     1,     2,     3,     4,    12, 11111,    12,     8,
           9])

In [51]: data11[:]=22222

In [52]: data10
Out[52]:
array([    0,     1,     2,     3,     4, 22222, 22222, 22222,     8,
           9])

其中你給一個切片賦值,他會自動傳遞個原數組。

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