Numpy array資料的增 刪 改 查

2021-08-17 06:48:15 字數 4705 閱讀 1265

增、刪、改、查的方法有很多很多種,這裡只展示出常用的幾種。

>>> import numpy as np

>>> a = np.array([[1,2],[3,4],[5,6]])#建立3行2列二維陣列。

>>> a

array([[1, 2],

[3, 4],

[5, 6]])

>>> a = np.zeros(6)#建立長度為6的,元素都是0一維陣列

>>> a = np.zeros((2,3))#建立2行3列,元素都是0的二維陣列

>>> a = np.ones((2,3))#建立2行3列,元素都是1的二維陣列

>>> a = np.empty((2,3)) #建立2行3列,未初始化的二維陣列

>>> a = np.arange(6)#建立長度為6的,元素都是0一維陣列array([0, 1, 2, 3, 4, 5])

>>> a = np.arange(1,7,1)#結果與np.arange(6)一樣。第一,二個引數意思是數值從1〜6,不包括7.第三個參數列步長為1.

a = np.linspace(0,10,7) # 生成首位是0,末位是10,含7個數的等差數列[ 0. 1.66666667 3.33333333 5. 6.66666667 8.33333333 10. ]

a = np.logspace(0,4,5)#用於生成首位是10**0,末位是10**4,含5個數的等比數列。[ 1.00000000e+00 1.00000000e+01 1.00000000e+02 1.00000000e+03 1.00000000e+04]

>>> a = np.array([[1,2],[3,4],[5,6]])

>>> b = np.array([[10,20],[30,40],[50,60]])

>>> np.vstack((a,b))

array([[ 1, 2],

[ 3, 4],

[ 5, 6],

[10, 20],

[30, 40],

[50, 60]])

>>> np.hstack((a,b))

array([[ 1, 2, 10, 20],

[ 3, 4, 30, 40],

[ 5, 6, 50, 60]])

不同維數的陣列直接相加顯然是不允許的。但是可以用乙個n行列向量和乙個m列行向量構造出乙個n×m矩陣

>>> a = np.array([[1],[2]])

>>> a

array([[1],

[2]])

>>> b=([[10,20,30]])#生成乙個list,注意,不是np.array。

>>> b

[[10, 20, 30]]

>>> a+b

array([[11, 21, 31],

[12, 22, 32]])

>>> c = np.array([10,20,30])

>>> c

array([10, 20, 30])

>>> c.shape

(3,)

>>> a+c

array([[11, 21, 31],

[12, 22, 32]])

>>> a

array([[1, 2],

[3, 4],

[5, 6]])

>>> a[0] # array([1, 2])

>>> a[0][1]#2

>>> a[0,1]#2

>>> b = np.arange(6)#array([0, 1, 2, 3, 4, 5])

>>> b[1:3]#右邊開區間array([1, 2])

>>> b[:3]#左邊預設為 0array([0, 1, 2])

>>> b[3:]#右邊預設為元素個數array([3, 4, 5])

>>> b[0:4:2]#下標遞增2array([0, 2])

numpy的where函式使用

np.where(condition, x, y),第乙個引數為乙個布林陣列,第二個引數和第三個引數可以是標量也可以是陣列。

cond = numpy.array([true,false,true,false])

a = numpy.where(cond,-2,2)# [-2 2 -2 2]

cond = numpy.array([1,2,3,4])

a = numpy.where(cond>2,-2,2)# [ 2 2 -2 -2]

b1 = numpy.array([-1,-2,-3,-4])

b2 = numpy.array([1,2,3,4])

a = numpy.where(cond>2,b1,b2) # 長度須匹配# [1,2,-3,-4]

>>> a = np.array([[1,2],[3,4],[5,6]])

>>> a[0] = [11,22]#修改第一行陣列[1,2]為[11,22]。

>>> a[0][0] = 111#修改第乙個元素為111,修改後,第乙個元素「1」改為「111」。

>>> a = np.array([[1,2],[3,4],[5,6]])

>>> b = np.array([[10,20],[30,40],[50,60]])

>>> a+b #加法必須在兩個相同大小的陣列鍵間運算。

array([[11, 22],

[33, 44],

[55, 66]])

不同維數的陣列直接相加顯然是不允許的。但是可以用乙個n行列向量和乙個m列行向量構造出乙個n×m矩陣

>>> a = np.array([[1],[2]])

>>> a

array([[1],

[2]])

>>> b=([[10,20,30]])#生成乙個list,注意,不是np.array。

>>> b

[[10, 20, 30]]

>>> a+b

array([[11, 21, 31],

[12, 22, 32]])

>>> c = np.array([10,20,30])

>>> c

array([10, 20, 30])

>>> c.shape

(3,)

>>> a+c

array([[11, 21, 31],

[12, 22, 32]])

陣列和乙個數字的加減乘除的運算,相當於乙個廣播,把這個運算廣播到各個元素中去。

>>> a = np.array([[1,2],[3,4],[5,6]])

>>> a*2#相當於a中各個元素都乘以2.類似於廣播。

array([[ 2, 4],

[ 6, 8],

[10, 12]])

>>> a**2

array([[ 1, 4],

[ 9, 16],

[25, 36]])

>>> a>3

array([[false, false],

[false, true],

[ true, true]])

>>> a+3

array([[4, 5],

[6, 7],

[8, 9]])

>>> a/2

array([[0.5, 1. ],

[1.5, 2. ],

[2.5, 3. ]])

利用查詢中的方法,比如a=a[0],操作完居後,a的行數隻剩一行了。

>>> a = np.array([[1,2],[3,4],[5,6]])

>>> a[0]

array([1, 2])

>>> a = np.array([[1,2],[3,4],[5,6]])

>>> np.delete(a,1,axis = 0)#刪除a的第二行。

array([[1, 2],

[5, 6]])

>>> np.delete(a,(1,2),0)#刪除a的第二,三行。

array([[1, 2]])

>>> np.delete(a,1,axis = 1)#刪除a的第二列。

array([[1],

[3],

[5]])

先分割,再按切片a=a[0]賦值。

>>> a = np.array([[1,2],[3,4],[5,6]])

>>> np.hsplit(a,2)#水平分割(搞不懂,明明是垂直分割嘛?)

[array([[1],

[3],

[5]]), array([[2],

[4],

[6]])]

>>> np.split(a,2,axis = 1)#與np.hsplit(a,2)效果一樣。

>>> np.vsplit(a,3)

[array([[1, 2]]), array([[3, 4]]), array([[5, 6]])]

>>> np.split(a,3,axis = 0)#與np.vsplit(a,3)效果一樣。

Numpy array陣列的操作

布林索引 建立乙個隨機整數陣列 arr2 np.random.randint 0,50,20 列印結果 array 17 42,35 3,38 1,34 12,24 39,30 33,46 0,30 0,32 28,16 0 獲取布林索引 arr2 2 0 列印結果 array false true...

numpy array軸的理解

最近的學習中,發現可以把軸看成是維度,特地分享給大家,方便理解numpy的陣列運算。如a np.arange 8 reshape 2,4 0 1 2 3 4 5 6 7 此時軸0對應 2,4 中的2,軸1對應 2,4 中的4。用乙個numpy中的函式來檢驗這個想法 numpy.swapaxes 函式...

numpy array多維度的理解

import numpy as np u1 np.array 0 0 0 0 0 0 0 0 0 0 u2 np.array 0 0 0 0 0 0 0 0 0 0 u5 np.dstack u1,u2 u4 np.hstack u1,u2 u3 np.vstack u1,u2 print u1.s...