numpy
import numpy as np
创建多维数组
data = [1,3,5,7]
array = np.array(data)
array
array([1, 3, 5, 7])
data = (1,3,5,7)
array = np.array(data)
array
array([1, 3, 5, 7])
data = [[1,2,3,4],[5,6,7,8]]
array = np.array(data)
array
array([[1, 2, 3, 4],
[5, 6, 7, 8]])
data = [1,3,5,7]
array = np.array(data,dtype = 'float64')
array.dtype
dtype('float64')
warray = np.arange(1,10,2)
warray
array([1, 3, 5, 7, 9])
warray = np.zeros(4)
warray
array([0., 0., 0., 0.])
warray = np.zeros([3,5])
warray
array([[0., 0., 0., 0., 0.],
[0., 0., 0., 0., 0.],
[0., 0., 0., 0., 0.]])
warray = np.ones(4)
warray
array([1., 1., 1., 1.])
warray = np.ones([4,3])
warray
array([[1., 1., 1.],
[1., 1., 1.],
[1., 1., 1.],
[1., 1., 1.]])
ndarray对象属性
import numpy as np
warry = np.array([[1,2,3,4],[2,3,4,5],[3,5,8,7]])
warry
array([[1, 2, 3, 4],
[2, 3, 4, 5],
[3, 5, 8, 7]])
warry.ndim
2
warry.shape
(3, 4)
warry.size
12
warry.dtype
dtype('int32')
warry.itemsize
4
warry.shape = 2,6
warry
array([[1, 2, 3, 4, 2, 3],
[4, 5, 3, 5, 8, 7]])
生成随机数
arr = np.random.randint(100,200,size=(2,4))
arr
array([[144, 170, 179, 185],
[114, 127, 146, 134]])
arr = np.random.rand(5)
arr
array([0.20542233, 0.20794384, 0.74888448, 0.26553629, 0.3132238 ])
arr = np.random.rand(2,4)
arr
array([[0.71962413, 0.98679998, 0.09635121, 0.01496932],
[0.75280209, 0.24139988, 0.6683052 , 0.31580649]])
数组变换
arr = np.arange(10)
arr
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
arr = arr.reshape(5,2)
arr
array([[0, 1],
[2, 3],
[4, 5],
[6, 7],
[8, 9]])
arr = arr.reshape(2,-1)
arr
array([[0, 1, 2, 3, 4],
[5, 6, 7, 8, 9]])
数组合并
arr1 = np.arange(6).reshape(2,3)
arr1
array([[0, 1, 2],
[3, 4, 5]])
arr2 = arr1
arr2
array([[0, 1, 2],
[3, 4, 5]])
arr3 = np.hstack((arr1,arr2))
arr3
array([[0, 1, 2, 0, 1, 2],
[3, 4, 5, 3, 4, 5]])
arr4 = np.concatenate((arr1,arr2),axis = 1)
arr4
array([[0, 1, 2, 0, 1, 2],
[3, 4, 5, 3, 4, 5]])
arr3 = np.vstack((arr1,arr2))
arr3
array([[0, 1, 2],
[3, 4, 5],
[0, 1, 2],
[3, 4, 5]])
arr4 = np.concatenate((arr1,arr2),axis = 0)
arr4
array([[0, 1, 2],
[3, 4, 5],
[0, 1, 2],
[3, 4, 5]])
数组分割
arr = np.arange(16).reshape(4,4)
arr
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11],
[12, 13, 14, 15]])
np.hsplit(arr,2)
[array([[ 0, 1],
[ 4, 5],
[ 8, 9],
[12, 13]]),
array([[ 2, 3],
[ 6, 7],
[10, 11],
[14, 15]])]
np.split(arr,2,axis=1)
[array([[ 0, 1],
[ 4, 5],
[ 8, 9],
[12, 13]]),
array([[ 2, 3],
[ 6, 7],
[10, 11],
[14, 15]])]
np.vsplit(arr,2)
[array([[0, 1, 2, 3],
[4, 5, 6, 7]]),
array([[ 8, 9, 10, 11],
[12, 13, 14, 15]])]
np.split(arr,2,axis=0)
[array([[0, 1, 2, 3],
[4, 5, 6, 7]]),
array([[ 8, 9, 10, 11],
[12, 13, 14, 15]])]
数组转置
arr = np.arange(12).reshape(3,4)
arr
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
arr = np.transpose(arr)
arr
array([[ 0, 4, 8],
[ 1, 5, 9],
[ 2, 6, 10],
[ 3, 7, 11]])
arr.T
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
数组的索引
arr = np.arange(30).reshape(5,6)
arr
array([[ 0, 1, 2, 3, 4, 5],
[ 6, 7, 8, 9, 10, 11],
[12, 13, 14, 15, 16, 17],
[18, 19, 20, 21, 22, 23],
[24, 25, 26, 27, 28, 29]])
arr[0,1:3]
array([1, 2])
arr[:,2]
array([ 2, 8, 14, 20, 26])
arr[0,1::2]
array([1, 3, 5])
数组的运算
a = np.array([1,2,3])
b = a*2
b
array([2, 4, 6])
x = np.array([1,2,3])
y = np.array([4,5,6])
x + y
array([5, 7, 9])
x - y
array([-3, -3, -3])
x * y
array([ 4, 10, 18])
x ** y
array([ 1, 32, 729], dtype=int32)
数组中的统计与分析
arr = np.array([2,9,5,6,7,5,8,3,11,20])
arr.sort()
arr
array([ 2, 3, 5, 5, 6, 7, 8, 9, 11, 20])
arr = np.array([[2,9,5,6],[7,5,8,3],[11,20,2,5]])
arr.sort(axis=1)
arr
array([[ 2, 5, 6, 9],
[ 3, 5, 7, 8],
[ 2, 5, 11, 20]])
arr.sort(axis=0)
arr
array([[ 2, 5, 6, 8],
[ 2, 5, 7, 9],
[ 3, 5, 11, 20]])
arr = np.array(['红','绿','红','蓝'])
np.unique(arr)
array(['红', '绿', '蓝'], dtype='<U1')
arr = np.arange(20).reshape(4,5)
arr
array([[ 0, 1, 2, 3, 4],
[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14],
[15, 16, 17, 18, 19]])
np.sum(arr)
190
np.sum(arr,axis=0)
array([30, 34, 38, 42, 46])
np.sum(arr,axis=1)
array([10, 35, 60, 85])
np.mean(arr)
9.5
np.std(arr)
5.766281297335398
np.max(arr)
19
np.min(arr)
0
np.var(arr)
33.25