(数据分析三板斧)第一斧Numpy-第二节:生成数组、数组属性和切片
- 部分參考:菜鳥教程
文章目錄
- 一:生成數(shù)組
- (1)由底層ndarray構(gòu)造器創(chuàng)建:np.arrary()
- (2)其他創(chuàng)建方法
- (3)特殊數(shù)組創(chuàng)建方法
- 二:數(shù)組屬性
- (1)N維數(shù)組-ndarray
- (2)軸的概念(axis)
- (3)ndarray屬性
- 三:索引和切片
- (1)基本操作
- (2)高級操作
一:生成數(shù)組
(1)由底層ndarray構(gòu)造器創(chuàng)建:np.arrary()
上一節(jié)簡單說明了array()函數(shù)的用法,其完整形式如下
numpy.array(object, dtype = None, copy = True, order = None, subok = False, ndmin = 0)- object :數(shù)組或嵌套的數(shù)列
- dtype :數(shù)組元素的數(shù)據(jù)類型,可選
- copy :對象是否需要復制,可選
- order :創(chuàng)建數(shù)組的樣式,C為行方向,F為列方向,A為任意方向(默認)
- subok:默認返回一個與基類類型一致的數(shù)組
- ndmin:指定生成數(shù)組的最小維度
(2)其他創(chuàng)建方法
①:可以使用fill()方法將數(shù)組設定為指定值
- 注意:如果fill()中傳入的數(shù)據(jù)類型和原有數(shù)組中數(shù)據(jù)的類型不一致時,會向原有的類型發(fā)生轉(zhuǎn)換
(3)特殊數(shù)組創(chuàng)建方法
①:生成全0或全1的數(shù)組
- 默認是浮點數(shù),如果需要其他類型,使用dtype指定即可
②:使用arange()生成整數(shù)序列,它會根據(jù) start 與 stop 指定的范圍以及 step 設定的步長,生成一個 ndarray,它的基本格式如下
numpy.arange(start, stop, step, dtype)- start:起始值,默認為0
- stop:終止值(不包含)
- step:步長,默認為1
- dtype:數(shù)據(jù)類型
比如
a = np.arange(0, 10, 2, int) print(a)③:使用linspace()生成等差數(shù)列,它的基本格式如下
np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)- start:序列的起始值
- stop:序列的終止值,如果endpoint為true,該值包含于數(shù)列中
- num:要生成的等步長的樣本數(shù)量,默認為50
- endpoint:該值為 true 時,數(shù)列中包含stop值,反之不包含,默認是True
- retstep:如果為 True 時,生成的數(shù)組中會顯示間距,反之不顯示
- dtype:數(shù)據(jù)類型
比如
a = np.linspace(1, 10, 10) b = np.linspace(10, 20, 5, endpoint=False, dtype=int) # 不包含終止值 print(a) print(b)④:使用random.rand()等函數(shù)生成隨機數(shù)
- 讀者可自行查閱相關(guān)文檔,探索更多的隨機數(shù)生成方法
二:數(shù)組屬性
(1)N維數(shù)組-ndarray
NumPy最核心的數(shù)據(jù)類型是N維數(shù)組The N-dimensional array (ndarray),可以看成homogenous(同質(zhì)) items的集合,與只密切相關(guān)的兩種類型是Data type objects (dtype)和Scalars
- 數(shù)據(jù)類型對象(np.dtype):用來描述與數(shù)組對應的內(nèi)存區(qū)域如何使用。比如數(shù)據(jù)的類型、大小等
- NumPy數(shù)據(jù)類型(scalar types):上一節(jié)已有介紹
如下是常見的1維、2維、3維數(shù)組
Numpy操作的對象就是數(shù)組,也即ndarray,這一點可以通過type()驗證
a = np.random.randint(1, 10, 10) # 10個隨機整數(shù) print(type(a))(2)軸的概念(axis)
Numpy數(shù)組的維數(shù)稱之為秩(rank),秩表示軸的數(shù)量;在Numpy中每一個線性的數(shù)組稱為一個軸(axis)
類似于笛卡爾坐標系,簡單的二維坐標系只有xxx軸和yyy軸,使用它們可以平面空間中唯一確定一個位置
而Numpy中的軸指的就是行、列的方向
- axis=0:表示沿著第 0 軸進行操作,即對每一列進行操作
- axis=1:表示沿著第1軸進行操作,即對每一行進行操作
(3)ndarray屬性
| ndarrary.ndim | 秩(軸的數(shù)量或者維度) |
| ndarray.shape | 數(shù)組的維度,對于矩陣,n 行 m 列 |
| ndarray.size | 數(shù)組元素的總個數(shù),相當于 .shape 中 n*m 的值 |
| ndarray.dtype | ndarray 對象的元素類型 |
| ndarray.itemsize | ndarray 對象中每個元素的大小,以字節(jié)為單位 |
| ndarray.flags | ndarray 對象的內(nèi)存信息 |
| ndarray.real | ndarray元素的實部 |
| ndarray.imag | ndarray元素的虛部 |
另外注意flags 所列信息含義
三:索引和切片
- 和Python中的list一樣,ndarray對象的內(nèi)容可以通過索引或切片來訪問和修改
(1)基本操作
①:最基本的索引訪問
a = np.random.randint(0, 10, size=[3, 3]) # 二維隨機整數(shù) print(a) print(a[0]) print(a[0][2])修改也是沒有問題的
a = np.random.randint(0, 10, size=[3, 3]) # 二維隨機整數(shù) print(a) a[0] = [9, 9, 9] print(a)②:切片可以通過start:stop:step來操作
a = np.random.randint(0, 10, size=[3, 3]) # 二維隨機整數(shù) print(a) print(a[0:2:1])同樣支持負索引
a = np.random.randint(0, 10, size=[3, 3]) # 二維隨機整數(shù) print(a) print(a[-2::1])(2)高級操作
- 暫略
總結(jié)
以上是生活随笔為你收集整理的(数据分析三板斧)第一斧Numpy-第二节:生成数组、数组属性和切片的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: AE学习笔记——第一章:AE的界面布局和
- 下一篇: (王道408考研数据结构)第五章树-第四