data=np.array([1,2,3])
data
array([1, 2, 3])
1.数组拆分
垂直拆分:numpy.vsplit(数组,份数)
c=np.arange(1,13).reshape(6,2)
c
array([[ 1, 2],
[ 3, 4],
[ 5, 6],
[ 7, 8],
[ 9, 10],
[11, 12]])
np.vsplit(c,3)
[array([[1, 2],
[3, 4]]),
array([[5, 6],
[7, 8]]),
array([[ 9, 10],
[11, 12]])]
水平拆分:numpy.hsplit(数组,分数)
d=c.T
d
array([[ 1, 3, 5, 7, 9, 11],
[ 2, 4, 6, 8, 10, 12]])
np.hsplit(d,3)
[array([[1, 3],
[2, 4]]),
array([[5, 7],
[6, 8]]),
array([[ 9, 11],
[10, 12]])]
堆叠:numpy.dstack()
a=np.arange(11,20).reshape(-1,1)
a
array([[11],
[12],
[13],
[14],
[15],
[16],
[17],
[18],
[19]])
b=np.arange(21,30).reshape(-1,1)
b
array([[21],
[22],
[23],
[24],
[25],
[26],
[27],
[28],
[29]])
e=np.dstack((a,b))
e
array([[[11, 21]],
[[12, 22]],
[[13, 23]],
[[14, 24]],
[[15, 25]],
[[16, 26]],
[[17, 27]],
[[18, 28]],
[[19, 29]]])
拆分:numpy.dsplit(数组,份数)
np.dsplit(e,2)
[array([[[11]],
[[12]],
[[13]],
[[14]],
[[15]],
[[16]],
[[17]],
[[18]],
[[19]]]),
array([[[21]],
[[22]],
[[23]],
[[24]],
[[25]],
[[26]],
[[27]],
[[28]],
[[29]]])]
灵活选择应用
inistate=np.array([1,2,3,4])
pre_inistate=inistate[0:3]
pre_inistate
array([1, 2, 3])
numpy 基本加减和取行操作
import numpy as np
a=np.array([1,1,1,1])
b=np.array([[1],[1],[1],[1]])
a+b
array([[2, 2, 2, 2],
[2, 2, 2, 2],
[2, 2, 2, 2],
[2, 2, 2, 2]])
c=np.array([[1,1,1,1]])
c+b
array([[2, 2, 2, 2],
[2, 2, 2, 2],
[2, 2, 2, 2],
[2, 2, 2, 2]])
取W的第一列
W=np.array([[1,1,1],[2,2,2]])
W[:,1]
array([1, 2])
取W的第一行
W[1]
array([2, 2, 2])
替换第一列
W[:,1]=np.array([5,5])
W
array([[1, 5, 1],
[2, 5, 2]])
矩阵删除delet、插入insert、尾部添加append操作
delete()函数
import numpy as np
matrix=[[1,2,3,4],[5,6,7,8],[9,10,11,12]]
p1=np.delete(matrix,1,0)
print('>>>>p1>>>>\n',p1)
p2 = np.delete(matrix, 1, 1)
print('>>>>p2>>>>\n',p2)
p3 = np.delete(matrix, 1)
print('>>>p3>>>>\n',p3)
p4 = np.delete(matrix, [0,1], 1)
print('>>>>p4>>>>\n',p4)
>>>>p1>>>>
[[ 1 2 3 4]
[ 9 10 11 12]]
>>>>p2>>>>
[[ 1 3 4]
[ 5 7 8]
[ 9 11 12]]
>>>p3>>>>
[ 1 3 4 5 6 7 8 9 10 11 12]
>>>>p4>>>>
[[ 3 4]
[ 7 8]
[11 12]]
insert()函数
import numpy as np
matrix=[[1,2,3,4],[5,6,7,8],[9,10,11,12]]
q1=np.insert(matrix,1,[1,1,1,1],0)
print('>>>>q1>>>>\n',q1)
>>>>q1>>>>
[[ 1 2 3 4]
[ 1 1 1 1]
[ 5 6 7 8]
[ 9 10 11 12]]
q2 = np.insert(matrix, 0, [1,1,1], 1)
print('>>>>q2>>>>\n',q2)
>>>>q2>>>>
[[ 1 1 2 3 4]
[ 1 5 6 7 8]
[ 1 9 10 11 12]]
q3 = np.insert(matrix, 3, [1,1,1,1], 0)
print('>>>>q3>>>>\n',q3)
>>>>q3>>>>
[[ 1 2 3 4]
[ 5 6 7 8]
[ 9 10 11 12]
[ 1 1 1 1]]
append()函数
matrix=[[1,2,3,4],[5,6,7,8],[9,10,11,12]]
m1=np.append(matrix,[[1,1,1,1]],axis=0)
print('>>>>m1>>>>\n',m1)
>>>>m1>>>>
[[ 1 2 3 4]
[ 5 6 7 8]
[ 9 10 11 12]
[ 1 1 1 1]]
m2 = np.append(matrix,[[1],[1],[1]],axis=1)
print('>>>>m2>>>>\n',m2)
>>>>m2>>>>
[[ 1 2 3 4 1]
[ 5 6 7 8 1]
[ 9 10 11 12 1]]
m3 = np.append(matrix,[1,1,1,1])
print('>>>>m3>>>>\n',m3)
>>>>m3>>>>
[ 1 2 3 4 5 6 7 8 9 10 11 12 1 1 1 1]
np.random.choice(a,size, replace, p)
import numpy as np
a1=np.random.choice(7,5)
a1
array([1, 2, 1, 0, 6])
a2 = np.random.choice([0,1,2,3,4,5,6],5)
a2
array([2, 1, 0, 2, 6])
a3 = np.random.choice(np.array([0,1,2,3,4,5,6]),5)
a3
array([0, 3, 3, 4, 0])
a4 = np.random.choice([0,1,2,3,4,5,6],5,replace=False)
a4
array([1, 5, 3, 2, 0])
a5 = np.random.choice(np.array([0,1,2,3,4,5,6]),5,p=[0.1,0.1,0.1,0.1,0.1,0.1,0.4])
a5
array([6, 6, 1, 0, 4])
np.argmax(a, axis=None, out=None)
import numpy as np
a = np.array([[1,1,1],[2,2,2],[0,3,6]])
a
array([[1, 1, 1],
[2, 2, 2],
[0, 3, 6]])
b1 = np.argmax(a)
b1
8
b2 = np.argmax(a, axis=0)
b2
array([1, 2, 2], dtype=int64)
b3=np.argmax(a,axis=1)
b3
array([0, 0, 2], dtype=int64)
*的作用
y1=np.linspace(-10.0,10.0)
y1
array([-10. , -9.59183673, -9.18367347, -8.7755102 ,
-8.36734694, -7.95918367, -7.55102041, -7.14285714,
-6.73469388, -6.32653061, -5.91836735, -5.51020408,
-5.10204082, -4.69387755, -4.28571429, -3.87755102,
-3.46938776, -3.06122449, -2.65306122, -2.24489796,
-1.83673469, -1.42857143, -1.02040816, -0.6122449 ,
-0.20408163, 0.20408163, 0.6122449 , 1.02040816,
1.42857143, 1.83673469, 2.24489796, 2.65306122,
3.06122449, 3.46938776, 3.87755102, 4.28571429,
4.69387755, 5.10204082, 5.51020408, 5.91836735,
6.32653061, 6.73469388, 7.14285714, 7.55102041,
7.95918367, 8.36734694, 8.7755102 , 9.18367347,
9.59183673, 10. ])
y2 = np.linspace(1,10,10)
y2
array([ 1., 2., 3., 4., 5., 6., 7., 8., 9., 10.])
y3 = np.linspace(1,10,10,endpoint=False)
y3
array([1. , 1.9, 2.8, 3.7, 4.6, 5.5, 6.4, 7.3, 8.2, 9.1])
y4= np.linspace(1, 10, 6, retstep=True)
y4
(array([ 1. , 2.8, 4.6, 6.4, 8.2, 10. ]), 1.8)
拉平操作 ravel()、faltten()、reshape(1,-1)、[None,:] 操作
import numpy as np
x = np.array([[1,2,3],[4,5,6],[1,2,3]])
x.flatten()
array([1, 2, 3, 4, 5, 6, 1, 2, 3])
x.ravel()
array([1, 2, 3, 4, 5, 6, 1, 2, 3])
x.ravel('F')
array([1, 4, 1, 2, 5, 2, 3, 6, 3])
x.flatten('F')
array([1, 4, 1, 2, 5, 2, 3, 6, 3])
x.flatten()[1]=20
x
array([[1, 2, 3],
[4, 5, 6],
[1, 2, 3]])
x.ravel()[1]=20
x
array([[ 1, 20, 3],
[ 4, 5, 6],
[ 1, 2, 3]])
x.reshape(1,-1)
array([[ 1, 20, 3, 4, 5, 6, 1, 2, 3]])
x[:,None]
array([[1],
[2],
[3],
[6],
[7],
[8]])
x[np.newaxis, :]
array([[1, 2, 3, 6, 7, 8]])
np.prod() 计算元素乘积
x = np.array([[1,2,3],[2,3,4]])
np.prod(x)
144
np.prod(x,axis=1)
array([ 6, 24])
np.prod(x,axis=0)
array([ 2, 6, 12])
maximum() 函数 、minimum() 函数,以及 矩阵操作
import numpy as np
x = np.array([[1,2,3],[-3,2,4],[5,-2,9]])
x
array([[ 1, 2, 3],
[-3, 2, 4],
[ 5, -2, 9]])
y1=np.maximum(0,x)
y1
array([[1, 2, 3],
[0, 2, 4],
[5, 0, 9]])
y2=np.minimum(0,x)
y2
array([[ 0, 0, 0],
[-3, 0, 0],
[ 0, -2, 0]])
x1=x.copy()
x1
array([[ 1, 2, 3],
[-3, 2, 4],
[ 5, -2, 9]])
x1[x1<0]=0
x1
array([[1, 2, 3],
[0, 2, 4],
[5, 0, 9]])
x2=x.copy()
x2[x2>0]=0
x2
array([[ 0, 0, 0],
[-3, 0, 0],
[ 0, -2, 0]])
numpy中的矩阵copy
import numpy as np
x = np.array([[1,2,3],[-3,2,4],[5,-2,9]])
x
array([[ 1, 2, 3],
[-3, 2, 4],
[ 5, -2, 9]])
x1 = x.copy()
x1[x1 > 0] = 0
x1
array([[ 0, 0, 0],
[-3, 0, 0],
[ 0, -2, 0]])
x
array([[ 1, 2, 3],
[-3, 2, 4],
[ 5, -2, 9]])
x2=x
x2
array([[ 1, 2, 3],
[-3, 2, 4],
[ 5, -2, 9]])
x2[x2>0] = 0
x2
array([[ 0, 0, 0],
[-3, 0, 0],
[ 0, -2, 0]])
x
array([[ 0, 0, 0],
[-3, 0, 0],
[ 0, -2, 0]])
x = np.array([[1,2,3],[-3,2,4],[5,-2,9]])
x3 = x[2]
x3
array([ 5, -2, 9])
x3[2] = 100
x
array([[ 1, 2, 3],
[ -3, 2, 4],
[ 5, -2, 100]])
np.zeros_like()构造全零矩阵,无需指定大小
x = np.array([[1,2,3],[4,5,6]])
np.zeros_like(x)
array([[0, 0, 0],
[0, 0, 0]])
np.random.rand() 生成均匀分布矩阵
n = np.random.rand(3,4)
n
array([[0.55070942, 0.11264475, 0.23473387, 0.54733659],
[0.93090094, 0.59149757, 0.15154385, 0.17706474],
[0.46473289, 0.58075965, 0.39459407, 0.17146212]])
np.random.randn() 生成正太分布矩阵
x = np.random.randn(2,3)
x
array([[-0.01372408, 1.12456958, -0.30401023],
[ 0.35689285, 0.58811853, 1.29256879]])
y = np.multiply(0.1,np.random.randn(2,3))+0.5
y
array([[0.36393121, 0.58014514, 0.45773994],
[0.49480454, 0.50189164, 0.39766901]])
np.randm.randint() 生成离散均匀分布的整数值组成的矩阵
z = np.random.randint(2,9,(2,3))
z
array([[5, 3, 8],
[6, 7, 3]])
m = np.random.randint(9,size = (2,3))
m
array([[2, 0, 7],
[0, 0, 7]])
python 断言 assert
x = 'You are right'
type(x)
str
assert type(x)==str,'x is not str'
x = [1,2,3]
type(x)
list
assert type(x)==str,'x is not str'
Traceback (most recent call last):
File"",line 1,in
AssertionError: x is not str
File "<ipython-input-82-9fc458b9836c>", line 2
Traceback (most recent call last):
^
SyntaxError: invalid syntax
np.pad()函数进行padding操作
A=np.arange(95,99).reshape(2,2)
A
array([[95, 96],
[97, 98]])
np.pad(A,((3,2),(2,3)),'constant',constant_values = (0,0))
array([[ 0, 0, 0, 0, 0, 0, 0],
[ 0, 0, 0, 0, 0, 0, 0],
[ 0, 0, 0, 0, 0, 0, 0],
[ 0, 0, 95, 96, 0, 0, 0],
[ 0, 0, 97, 98, 0, 0, 0],
[ 0, 0, 0, 0, 0, 0, 0],
[ 0, 0, 0, 0, 0, 0, 0]])
b=np.array([[[1,2],[3,4]],[[3,4],[7,8]],[[4,5],[1,2]]])
b
array([[[1, 2],
[3, 4]],
[[3, 4],
[7, 8]],
[[4, 5],
[1, 2]]])
np.pad(b,((0,0),(1,1),(1,1)),'constant', constant_values = 0)
array([[[0, 0, 0, 0],
[0, 1, 2, 0],
[0, 3, 4, 0],
[0, 0, 0, 0]],
[[0, 0, 0, 0],
[0, 3, 4, 0],
[0, 7, 8, 0],
[0, 0, 0, 0]],
[[0, 0, 0, 0],
[0, 4, 5, 0],
[0, 1, 2, 0],
[0, 0, 0, 0]]])
numpy.empty() 创建指定形状和数据类型且未初始化的数组
x=np.empty([3,2],dtype=int)
x
array([[-1860791888, 531],
[ 0, 0],
[ 131074, 0]])
np.full 用于形成元素全为某元素的矩阵
c = np.array([[1,2],[3,4]])
c
array([[1, 2],
[3, 4]])
c.astype(np.float32)
array([[1., 2.],
[3., 4.]], dtype=float32)
np.meshgrid() 快速生成网格
x = np.array([1,3,5])
y = np.array([4,6])
XX,YY = np.meshgrid(x,y)
XX
array([[1, 3, 5],
[1, 3, 5]])
YY
array([[4, 4, 4],
[6, 6, 6]])
np.hstack() 和 np.vstack() 用于堆叠矩阵
x = np.array([[3,4,5],[1,3,4]])
y = np.array([[1,1,1],[2,2,2]])
np.hstack((x,y))
array([[3, 4, 5, 1, 1, 1],
[1, 3, 4, 2, 2, 2]])
np.vstack((x,y))
array([[3, 4, 5],
[1, 3, 4],
[1, 1, 1],
[2, 2, 2]])
np.floor 向下取整 np.ceil 向上取整
a = np.array([0.125,0.568,5.688])
np.round(a)
array([0., 1., 6.])
np.round(a,decimals = 2)
array([0.12, 0.57, 5.69])
np.floor(a)
array([0., 0., 5.])
np.ceil(a)
array([1., 1., 6.])
python 广播机制
a=np.array([[1,2,3],[4,5,6]])
a=np.array([[1,2,3,6],[4,5,6,6]])
a1=a.reshape((1,2,4))
a1
array([[[1, 2, 3, 6],
[4, 5, 6, 6]]])
b=np.array([[3,4,5,6],[1,2,3,4],[4,5,5,5]])
b
array([[3, 4, 5, 6],
[1, 2, 3, 4],
[4, 5, 5, 5]])
b1=b.reshape((1,3,4)).transpose((1,0,2))
b1
array([[[3, 4, 5, 6]],
[[1, 2, 3, 4]],
[[4, 5, 5, 5]]])
a1
array([[[1, 2, 3, 6],
[4, 5, 6, 6]]])
a1+b1
array([[[ 4, 6, 8, 12],
[ 7, 9, 11, 12]],
[[ 2, 4, 6, 10],
[ 5, 7, 9, 10]],
[[ 5, 7, 8, 11],
[ 8, 10, 11, 11]]])
numpy.transpose()转置
c=np.array([[[1,2,5],[3,4,6]],[[4,5,6],[7,8,9]]])
c
array([[[1, 2, 5],
[3, 4, 6]],
[[4, 5, 6],
[7, 8, 9]]])
c.transpose(1,0,2)
array([[[1, 2, 5],
[4, 5, 6]],
[[3, 4, 6],
[7, 8, 9]]])
c.transpose(1,2,0)
array([[[1, 4],
[2, 5],
[5, 6]],
[[3, 7],
[4, 8],
[6, 9]]])
a=np.array([2,2,3,4,5,5,6,7])
a[0:7:2]
array([2, 3, 5, 6])
a=np.array([2,2,3,4,5,5,6,7])
a[0::2]
array([2, 3, 5, 6])
a[::-1]
array([7, 6, 5, 5, 4, 3, 2, 2])
a=np.array([2,2,3,4,5,5,6,7])
s=slice(0,7,2)
a[s]
array([2, 3, 5, 6])