增、刪、改、查的方法有很多很多種,這裡只展示出常用的幾種。
>>> 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...