文章目錄
- 一、學習前的準備
- 二、numpy原生陣列的創建
- 1、np.array()
- 2、np.eye()
- 3、np.zeros()
- 4、np.ones()
- 5、np.arrange()
- 6、np.linspace()
- 7、np.indices()
- 三、一些操作
- 1、獲取數值、修改數值
- 2、查看維度、維度的長度、陣列元素型別
- 3、四則運算及邏輯運算
- 4、reshape:更改陣列形狀
- 5、索引及其一些切片操作
- 四、參考:
- 五、Blogger's speech
這篇文章是自己學習資料分析的第三篇了,正好寫完了“資料分析三劍客”,因為本身也是初學者,所以知識點較為基礎,希望能對你有所幫助,
相關文章傳送:
python資料分析之pandas超詳細學習筆記
python資料分析之Matplotlib學習筆記
作者:遠方的星
CSDN:https://blog.csdn.net/qq_44921056
本文僅用于交流學習,未經作者允許,禁止轉載,更勿做其他用途,違者必究,
一、學習前的準備
匯入numpy庫
import numpy as np
二、numpy原生陣列的創建
1、np.array()
array():創建一個陣列
2、np.eye()
eye(N,M,K):創建一個對角線為1的二維陣列
N:為輸出的行數
M:為輸出的列數,默認與N相同
K:可以理解為數值為1的對角線的偏移量,k為正,則向右移動,為負,則向左移動
3、np.zeros()
- zeros():創建一個用指定形狀用0填充的陣列,
zeros(shape, dtype=float, order=‘C’)
shape:形狀,也就是幾行幾列的陣列
dtype:可選引數,資料型別,默認numpy.float64
order:可選引數,c代表與c語言類似,行優先;F代表列優先
4、np.ones()
- ones():將創建一個用指定形狀用1填充的陣列
與ones用法類似
5、np.arrange()
- arrange():創建一具有有規律遞增值的陣列
arrange()內的常見引數有三種情況(也可以加dtype引數):
1)一個引數時,引數值為終點,起點取默認值0,步長取默認值1,
2)兩個引數時,第一個引數為起點,第二個引數為終點,步長取默認值1,
3)三個引數時,第一個引數為起點,第二個引數為終點,第三個引數為步長,其中步長支持小數,
6、np.linspace()
- linspace():將創建具有指定數量元素的陣列,并在指定的開始值和結束值之間平均間隔,
np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None, axis=0)此為默認值
1、將區間[start, stop]分成等間隔的num個數(包含start和stop兩個數),并回傳它們組成的陣列;
2、若endpoint=False,就將區間[start, stop]分成等間隔的num+1個數,但回傳的陣列中不包括‘stop’項;
3、若retstep=True,回傳值格式為 (陣列部分, 間隔長度),即在原有陣列部分的基礎上,加上間隔長度的資料;
4、 dtype決定輸出陣列的資料型別,若是未指定,則根據輸入引數決定,
5、 axis在二維陣列上面有著一定的作用
7、np.indices()
- indices():創建一組陣列(堆積為一個更高的陣列),每個維度一個,每個維度表示該維度中的變化,
示例:
# -*- coding: UTF-8 -*-
"""
@Author :遠方的星
@Time : 2021/5/1 11:01
@CSDN :https://blog.csdn.net/qq_44921056
@騰訊云 : https://cloud.tencent.com/developer/column/91164
"""
import numpy as np
print('---------------narry的例子--------------------')
print(np.array([5, 2.1, 'love', 'M']))
print('---------------eye默認情況--------------------')
print(np.eye(4))
print('---------------eye中引數M與N不一致------------')
print(np.eye(4, 3))
print('---------------eye中引數K為正數---------------')
print(np.eye(4, k=1))
print('---------------eye中引數K為負數---------------')
print(np.eye(4, k=-1))
print('---------------zeros中dtype取默認值-----------')
print(np.zeros((2, 3)))
print('---------------zeros中dtpye取int--------------')
print(np.zeros((2, 3), dtype=int))
print('---------------ones的一個小例子---------------')
print(np.ones((2, 3)))
print('---------------arrange不加入dtype引數---------')
print(np.arange(2, 10, 2))
print('---------------arrange加入dtype引數-----------')
print(np.arange(2, 10, 2, dtype=float)) # 這里更規范可以寫成np.float
print('---------------linspace的例子-----------------')
print(np.linspace(start=1, stop=3, num=5, endpoint=True, retstep=False, dtype=None, axis=0))
print('---------------linspace中引數endpoint=False---')
print(np.linspace(start=1, stop=3, num=5, endpoint=False, retstep=False, dtype=None, axis=0))
print('---------------linspace中引數retstep=True-----')
print(np.linspace(start=1, stop=3, num=5, endpoint=True, retstep=True, dtype=None, axis=0))
print('---------------linspace中dtype引數------------')
print(np.linspace(start=1, stop=3, num=5, endpoint=True, retstep=False, dtype=float, axis=0))
print('---------------indices的第一個例子------------')
print(np.indices((3, 4)))
print('---------------indices的第2個例子------------')
print(np.indices((6, 5), dtype=float))
輸出:
---------------narry的例子--------------------
['5' '2.1' 'love' 'M']
---------------eye默認情況--------------------
[[1. 0. 0. 0.]
[0. 1. 0. 0.]
[0. 0. 1. 0.]
[0. 0. 0. 1.]]
---------------eye中引數M與N不一致------------
[[1. 0. 0.]
[0. 1. 0.]
[0. 0. 1.]
[0. 0. 0.]]
---------------eye中引數K為正數---------------
[[0. 1. 0. 0.]
[0. 0. 1. 0.]
[0. 0. 0. 1.]
[0. 0. 0. 0.]]
---------------eye中引數K為負數---------------
[[0. 0. 0. 0.]
[1. 0. 0. 0.]
[0. 1. 0. 0.]
[0. 0. 1. 0.]]
---------------zeros中dtype取默認值-----------
[[0. 0. 0.]
[0. 0. 0.]]
---------------zeros中dtpye取int--------------
[[0 0 0]
[0 0 0]]
---------------ones的一個小例子---------------
[[1. 1. 1.]
[1. 1. 1.]]
---------------arrange不加入dtype引數---------
[2 4 6 8]
---------------arrange加入dtype引數-----------
[2. 4. 6. 8.]
---------------linspace的例子-----------------
[1. 1.5 2. 2.5 3. ]
---------------linspace中引數endpoint=False---
[1. 1.4 1.8 2.2 2.6]
---------------linspace中引數retstep=True-----
(array([1. , 1.5, 2. , 2.5, 3. ]), 0.5)
---------------linspace中dtype引數------------
[1. 1.5 2. 2.5 3. ]
---------------indices的第一個例子------------
[[[0 0 0 0]
[1 1 1 1]
[2 2 2 2]]
[[0 1 2 3]
[0 1 2 3]
[0 1 2 3]]]
---------------indices的第2個例子------------
[[[0. 0. 0. 0. 0.]
[1. 1. 1. 1. 1.]
[2. 2. 2. 2. 2.]
[3. 3. 3. 3. 3.]
[4. 4. 4. 4. 4.]
[5. 5. 5. 5. 5.]]
[[0. 1. 2. 3. 4.]
[0. 1. 2. 3. 4.]
[0. 1. 2. 3. 4.]
[0. 1. 2. 3. 4.]
[0. 1. 2. 3. 4.]
[0. 1. 2. 3. 4.]]]
三、一些操作
a = np.array([1, 2, 3, 4])
b = np.array([5, 6, 7, 8])
c = np.eye(4)
d = np.array([False, True, True, False, True])
e = np.array([False, False, False, True, True])
print(a)
print(b)
print(c)
print(d)
print(e)
輸出:
[1 2 3 4] # a
[5 6 7 8] # b
[[1. 0. 0. 0.] # c
[0. 1. 0. 0.]
[0. 0. 1. 0.]
[0. 0. 0. 1.]]
[False True True False True] # d
[False False False True True] # e
注:以下操作以此為基礎
1、獲取數值、修改數值
print('--------讀取a索引值為1的數值-------')
print(a[3])
print('--------讀取c第二行的數值----------')
print(c[1])
print('--------讀取c第三列的數值----------')
print(c[:, 2])
print('--------讀取c第一行第一列的數值----')
print(c[0, 0])
print('--------修改c第一行第一列的數值----')
c[0, 0] = 2
print(c)
輸出:
--------讀取a索引值為1的數值-------
4
--------讀取c第二行的數值----------
[0. 1. 0. 0.]
--------讀取c第三列的數值----------
[0. 0. 1. 0.]
--------讀取c第一行第一列的數值----
1.0
--------修改c第一行第一列的數值----
[[2. 0. 0. 0.]
[0. 1. 0. 0.]
[0. 0. 1. 0.]
[0. 0. 0. 1.]]
2、查看維度、維度的長度、陣列元素型別
print('-----------查看a和c的維度-------')
print(a.ndim)
print(c.ndim)
print('-----------查看a和c的各維度長度--')
# 第一個是行,第二個是列
print(a.shape)
print(c.shape)
print('-----------查看a、e陣列元素型別--')
print(a.dtype)
print(d.dtype)
輸出:
-----------查看a和c的維度-------
1
2
-----------查看a和c的各維度長度--
(4,)
(4, 4)
-----------查看陣列元素型別------
int32
bool
3、四則運算及邏輯運算
print('-----------a與b相加------')
print(b+a)
print('-----------a與b相減------')
print(b-a)
print('-----------a與b相乘------')
print(b*a)
print('-----------a與b相除------')
print(b/a)
print('-----------d與e相與------')
print(np.logical_and(d, e))
print('-----------d與e相或------')
print(np.logical_or(d, e))
print('-----------d取非---------')
print(np.logical_not(d))
print('-----------d與e異或------')
print(np.logical_xor(d, e))
輸出:
-----------a與b相加------
[ 6 8 10 12]
-----------a與b相減------
[4 4 4 4]
-----------a與b相乘------
[ 5 12 21 32]
-----------a與b相除------
[5. 3. 2.33333333 2. ]
-----------d與e相與------
[False False False False True]
-----------d與e相或------
[False True True True True]
-----------d與e非--------
[ True False False True False]
-----------d與e異或------
[False True True True False]
4、reshape:更改陣列形狀
# 將一行四列的陣列改為兩行兩列的陣列
print(a.reshape(2, 2))
輸出:
[[1 2]
[3 4]]
- 當reshape中的數字為負數時,則代表未指定具體要求,可用來只獲得行或列
print('---------只獲得列------')
print(a.reshape(-1, 1))
print('---------只獲得行------')
print(a.reshape(1, -2))
輸出:
---------只獲得列------
[[1]
[2]
[3]
[4]]
---------只獲得行------
[[1 2 3 4]]
5、索引及其一些切片操作
首先,可以來認識一下索引,索引分為正索引和負索引,下面是一個陣列,正負索引相對應的圖解

基本切片語法是 i:j:k,其中 i 是起始索引,j 是停止索引,k 是步驟(k默認為1),且a[i,j]是可以理解為左閉右開的,
- ①以一維陣列a為例
print('----------從索引值0到索引值1的結果------------')
print(a[0: 2])
print('----------從索引值0到索引值2的結果------------')
print(a[: 3])
print('----------從索引值0到索引值2增長的步長為2------')
print(a[0: 3: 2])
print('----------從索引值-1到索引值-2的結果-----------')
print(a[-1: -3])
print('----------從索引值1到索引值-2的結果------------')
print(a[1: -1])
輸出:
----------從索引值0到索引值1的結果------------
[1 2]
----------從索引值0到索引值2的結果------------
[1 2 3]
----------從索引值0到索引值2增長的步長為2------
[1 3]
----------從索引值-1到索引值-2的結果-----------
[]
----------從索引值1到索引值-2的結果------------
[2 3]
注意: 有一個結果為空,所以,索引是不能以負索引為起始索引,
- ②以二維陣列c為例
print('----------對應圖中的紅色區域部分-------------')
print(c[1, 2:4])
print('----------對應圖中的藍色區域部分-------------')
print(c[2:4, 0:2])
print('----------對應圖中的綠色區域部分-------------')
print(c[0, :])
輸出:
----------從索引值0到索引值1的結果------------
[0. 0.]
----------從索引值0到索引值1的結果------------
[[0. 0.]
[0. 0.]]
----------從索引值0到索引值1的結果------------
[1. 0. 0. 0.]

四、參考:
官方檔案
參考博文
五、Blogger’s speech
如有不足,還請大佬評論區留言或私信我,我會進行補充,
感謝您的支持,希望可以點贊,關注,收藏,一鍵三連喲,
作者:遠方的星
CSDN:https://blog.csdn.net/qq_44921056
騰訊云:https://cloud.tencent.com/developer/column/91164
本文僅用于交流學習,未經作者允許,禁止轉載,更勿做其他用途,違者必究,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/282559.html
標籤:AI
上一篇:使用YOLOV3訓練自己的資料集
下一篇:C++ 簡介
