PythonML
purpose:学习Numpy的基础操作
Numpy及向量化
import numpy as np
1.1创建Array
my_list=[1,2,3]
x=np.array(my_list)
print('列表:',my_list)
print('Array:',x)
列表: [1, 2, 3]
Array: [1 2 3]
x.shape
(3,)
x.ndim
1
np.array([1,2,3,])-np.array([4,5,6])
array([-3, -3, -3])
m=np.array([[1,2,3],[4,5,6]])
print(m)
print('shape:',m.shape)
[[1 2 3]
[4 5 6]]
shape: (2, 3)
n=np.arange(0,30,2)
print(n)
[ 0 2 4 6 8 10 12 14 16 18 20 22 24 26 28]
n=n.reshape(3,5)
print(n)
[[ 0 2 4 6 8]
[10 12 14 16 18]
[20 22 24 26 28]]
print('one:\n',np.ones((3,2)))
print('zeros:\n',np.zeros((3,2)))
print('eye:\n',np.eye(3))
print('diag:\n',np.diag(my_list))
one:
[[1. 1.]
[1. 1.]
[1. 1.]]
zeros:
[[0. 0.]
[0. 0.]
[0. 0.]]
eye:
[[1. 0. 0.]
[0. 1. 0.]
[0. 0. 1.]]
diag:
[[1 0 0]
[0 2 0]
[0 0 3]]
print('操作:\n',np.array([1,2,3]*3))
print('repeat:\n',np.repeat([1,2,3],3))
操作:
[1 2 3 1 2 3 1 2 3]
repeat:
[1 1 1 2 2 2 3 3 3]
p1=np.ones((3,3))
p2=np.arange(9).reshape((3,3))
print(p1)
print(p2)
print('纵向相加:\n',np.vstack((p1,p2)))
print('横向相加:\n',np.hstack((p1,p2)))
[[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]]
[[0 1 2]
[3 4 5]
[6 7 8]]
纵向相加:
[[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]
[0. 1. 2.]
[3. 4. 5.]
[6. 7. 8.]]
横向相加:
[[1. 1. 1. 0. 1. 2.]
[1. 1. 1. 3. 4. 5.]
[1. 1. 1. 6. 7. 8.]]
1.2Array操作
print('p1:\n',p1)
print('p2:\n',p2)
print('p1+p2=\n',p1+p2)
print('p1*p2=\n',p1*p2)
print('p2^2=\n',p2**2)
print('p1.p2=\n',p1.dot(p2))
p1:
[[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]]
p2:
[[0 1 2]
[3 4 5]
[6 7 8]]
p1+p2=
[[1. 2. 3.]
[4. 5. 6.]
[7. 8. 9.]]
p1*p2=
[[0. 1. 2.]
[3. 4. 5.]
[6. 7. 8.]]
p2^2=
[[ 0 1 4]
[ 9 16 25]
[36 49 64]]
p1.p2=
[[ 9. 12. 15.]
[ 9. 12. 15.]
[ 9. 12. 15.]]
p3=np.arange(6).reshape((2,3))
print(p3)
print('行向量:\n',p3.reshape(1,-1))
print('列向量:\n',p3.reshape(-1,1))
[[0 1 2]
[3 4 5]]
行向量:
[[0 1 2 3 4 5]]
列向量:
[[0]
[1]
[2]
[3]
[4]
[5]]
a=np.array([-4,-2,1,3,5])
print(a)
print('sum:',a.sum())
print('min:',a.min())
print('max:',a.max())
print('mean:',a.mean())
print('std:',a.std())
print('argmax:',a.argmax())
print('argmin:',a.argmin())
[-4 -2 1 3 5]
sum: 3
min: -4
max: 5
mean: 0.6
std: 3.2619012860600183
argmax: 4
argmin: 0
1.3索引与切片
s=np.arange(13)**2
print('s: ',s)
print('s[0]: ',s[0])
print('s[4]: ',s[4])
print('s[0:3]: ',s[0:3])
print('s[[0,2,4]]: ',s[[0,2,4]])
s: [ 0 1 4 9 16 25 36 49 64 81 100 121 144]
s[0]: 0
s[4]: 16
s[0:3]: [0 1 4]
s[[0,2,4]]: [ 0 4 16]
r=np.arange(36).reshape((6,6))
print(r)
print('r>30:\n',r[r>30])
[[ 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]
[30 31 32 33 34 35]]
r>30:
[31 32 33 34 35]
r2=r[:3,:3]
print(r2)
r2[:]=0
print(r)
r3=r.copy()
r3[:]=10
print(r)
[[0 0 0]
[0 0 0]
[0 0 0]]
[[ 0 0 0 3 4 5]
[ 0 0 0 9 10 11]
[ 0 0 0 15 16 17]
[18 19 20 21 22 23]
[24 25 26 27 28 29]
[30 31 32 33 34 35]]
[[ 0 0 0 3 4 5]
[ 0 0 0 9 10 11]
[ 0 0 0 15 16 17]
[18 19 20 21 22 23]
[24 25 26 27 28 29]
[30 31 32 33 34 35]]
1.4遍历Array
t=np.random.randint(0,10,(4,3))
print(t)
[[6 7 7]
[5 0 1]
[3 7 7]
[4 6 2]]
for row in t:
print(row)
[6 7 7]
[5 0 1]
[3 7 7]
[4 6 2]
for i,row in enumerate(t):
print('row {} is {} '.format(i,row))
row 0 is [6 7 7]
row 1 is [5 0 1]
row 2 is [3 7 7]
row 3 is [4 6 2]