1、numpy的基本属性
(1)定义
import numpy as np
a=np.array([[1,2,3],
[2,3,4]])
print(a)
#[[1 2 3]
[2 3 4]]
(2)维数
print("number of dim:",a.dim)
# number of dim: 2
(3)形状
print("shape:",a.shape)
# shape: (2, 3)
(4)大小
print("size:",a.size)
# size: 6
2、创建数组
(1)定义一维数组及类型
import numpy as np
a=np.array([2,23,4],dtype=np.int)
print(a)
print(a.dtype)
#[ 2 23 4]
int32
(2)定义二维矩阵
import numpy as np
a=np.array([[2,23,4],
[2,23,4]])
print(a)
# [[ 2 23 4]
[ 2 23 4]]
(3)定义全都为0的数组
a=np.zeros((3,4))
print(a)
# [[0. 0. 0. 0.]
[0. 0. 0. 0.]
[0. 0. 0. 0.]]
(4)定义全都为1的数组
import numpy as np
a=np.ones((3,4))
print(a)
[[1. 1. 1. 1.]
[1. 1. 1. 1.]
[1. 1. 1. 1.]]
(5)定义什么都没有的数组
import numpy as np
a=np.empty((3,4))
print(a)
# [[6.23042070e-307 4.67296746e-307 1.69121096e-306 1.33511290e-306]
[6.23058368e-307 1.78019082e-306 1.78020984e-306 6.23053954e-307]
[1.42420481e-306 1.24612013e-306 8.45605478e-307 1.86919921e-306]]
(6)生成等长线段
import numpy as np
a=np.linspace(1,10,6).reshape((2,3))
print(a)
# [[ 1. 2.8 4.6]
[ 6.4 8.2 10. ]]
3、numpy的基础运算
(1)加法和比较
import numpy as np
a=np.array([10,20,30,40])
b=np.arange(4)
print(a,b)
c=a+b
print(c)
print(b<3)
# [10 20 30 40] [0 1 2 3]
[10 21 32 43]
[ True True True False]
(2)乘法
import numpy as np
a=np.array([[1,1],
[0,1]])
b=np.arange(4).reshape((2,2))
#逐个相乘
c=a*b
#点乘
c_dot=np.dot(a,b)
c_dot_2=a.dot(b) #第二种表示方式
print(c)
print(c_dot)
#[[0 1]
[0 3]]
[[2 4]
[2 3]]
(3)随机生成,求和,最大值,最小值
import numpy as np
a=np.random.random((2,4))
print(a)
print(np.sum(a))
print(np.min(a))
print(np.max(a))
#[[0.85328566 0.5705338 0.42037589 0.87088714]
[0.06082003 0.95349259 0.12335217 0.838677 ]]
4.691424276760934
0.060820032482145736
0.9534925867545939
#print(np.sum(a,axis=1)) 代表在某一列的和
#print(np.sum(a,axis=0)) 代表在某一行的和
(4)输出最大位,最小位,平均值,中位数
import numpy as np
a=np.arange(2,14).reshape(3,4)
print(np.argmin(a))
print(np.argmax(a))
#平均值的两种方法
print(np.mean(a))
print(np.average(a))
#中位数
print(np.median(a))
# 0
11
7.5
7.5
7.5
(5)累加、累差
import numpy as np
a=np.arange(2,14).reshape(3,4)
#累加
print(np.cumsum(a))
#[[ 2 3 4 5]
[ 6 7 8 9]
[10 11 12 13]]
[ 2 5 9 14 20 27 35 44 54 65 77 90]
#累差
print(np.diff(a))
#[[1 1 1]
[1 1 1]
[1 1 1]]
(6) 找出非零的数
import numpy as np
a=np.arange(2,14).reshape(3,4)
print(a)
print(np.nonzero(a))
#[[ 2 3 4 5]
[ 6 7 8 9]
[10 11 12 13]]
(array([0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2], dtype=int64), array([0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3], dtype=int64))
(7) 排序
import numpy as np
a=np.arange(14,2,-1).reshape(3,4)
print(a)
print(np.sort(a))
# [[14 13 12 11]
[10 9 8 7]
[ 6 5 4 3]]
[[11 12 13 14]
[ 7 8 9 10]
[ 3 4 5 6]]
(8)矩阵的反向
import numpy as np
a=np.arange(14,2,-1).reshape(3,4)
print(a)
print(np.transpose(a))
#print(a.T)
# [[14 13 12 11]
[10 9 8 7]
[ 6 5 4 3]]
[[14 10 6]
[13 9 5]
[12 8 4]
[11 7 3]]
(9)clip功能
import numpy as np
a=np.arange(14,2,-1).reshape(3,4)
print(a)
print(np.clip(a,5,9))
# [[14 13 12 11]
[10 9 8 7]
[ 6 5 4 3]]
[[9 9 9 9]
[9 9 8 7]
[6 5 5 5]]
4、numpy索引
import numpy as np
a=np.arange(3,15).reshape((3,4))
print(a)
print(a[2][1])
#print(a[2,1])
#第二行的所有数
print(a[2,:])
#第一行的从1到2的值
print(a[1,1:3])
[[ 3 4 5 6]
[ 7 8 9 10]
[11 12 13 14]]
12
[11 12 13 14]
[8 9]
5、合并
import numpy as np
a=np.array([1,1,1])
b=np.array([2,2,2])
#纵向合并
C=np.vstack((a,b))
#横向合并
D=np.hstack((a,b))
print(a.shape,C.shape,D.shape)
#变成纵向
print(a[:,np.newaxis])
#多个合并
E=np.concatenate((a,b,a,b),axis=0)
print(E)
#(3,) (2, 3) (6,)
[[1]
[1]
[1]]
[1 1 1 2 2 2 1 1 1 2 2 2]
6、分割
import numpy as np
a=np.arange(12).reshape((3,4))
print(a)
#等量分割
print(np.split(a,2,axis=1))
# 不等量的分割
print(np.array_split(a,3,axis=1))
# 纵向分割
print(np.vsplit(a,3))
print(np.hsplit(a,2))
#[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
[array([[0, 1],
[4, 5],
[8, 9]]), array([[ 2, 3],
[ 6, 7],
[10, 11]])]
[array([[0, 1],
[4, 5],
[8, 9]]), array([[ 2],
[ 6],
[10]]), array([[ 3],
[ 7],
[11]])]
[array([[0, 1, 2, 3]]), array([[4, 5, 6, 7]]), array([[ 8, 9, 10, 11]])]
[array([[0, 1],
[4, 5],
[8, 9]]), array([[ 2, 3],
[ 6, 7],
[10, 11]])]
7、复制
(1)指向同一地址的复制
import numpy as np
a=np.arange(4)
b=a
c=a
d=b
a[0]=11
print(b)
[11 1 2 3]
(2)copy
import numpy as np
a=np.arange(4)
b=a.copy() # deep copy
a[0]=10
print(b)
#[0 1 2 3]