numpy数据处理--莫烦教程
(感觉是多维数组的 操作)
1.安装 pip指令即可
2.基本操作
2.1numpy 属性
import numpy as np
#numpy属性
array=np.array([[1,2,3],
[4,5,6]])#将列表转换为数组
print(array)
print('number of dim:',array.ndim)
print('shape:',array.shape)
print('size:',array.size)
#结果展示
[[1 2 3]
[4 5 6]]
number of dim: 2
shape: (2, 3)
size: 6
2.2 numpy array的创建
import numpy as np
a=np.array([2,23,4],dtype=np.int32)#int64 float32 float64
print(a.dtype)
print(a)
b=np.zeros((2,3))#全0
print(b)
c=np.ones((3,4))#全1
print(c)
e=np.arange(10,20,2)#定义范围 起 始 步长
print(e)
f=np.arange(10).reshape((2,5))#变形
print(f)
aa=np.linspace(1,10,6).reshape((2,3))#从1到10,生成6个数字
print(aa)
#结果展示
int32
[ 2 23 4]
[[0. 0. 0.]
[0. 0. 0.]]
[[1. 1. 1. 1.]
[1. 1. 1. 1.]
[1. 1. 1. 1.]]
[10 12 14 16 18]
[[0 1 2 3 4]
[5 6 7 8 9]]
[[ 1. 2.8 4.6]
[ 6.4 8.2 10. ]]
2.3numpy的基础运算1
import numpy as np
## +-*/
a=np.array([1,0,2,4])
b=np.arange(4)
bb=np.arange(4).reshape((2,2))
c=a*b
print(a,b)
print(bb)
print(c)#各元素分别相乘
print(np.sin(a))
print(a)
print(a<3)
print(a==b)
##矩阵运算
print(np.dot(a,b))#矩阵相乘
print(a.dot(b))
##随机生成数字
d=np.random.random((2,4))#生成2行4列 0-1的矩阵
print(d)
print(np.sum(d))#所有元素相加
print(np.sum(d,axis=0))#按列相加
print(np.sum(d,axis=1))#按行相加
print(np.min(d))
print(np.max(d))
print(np.min(d,axis=0))#每列最小元素
print(np.min(d,axis=1))#每行最小元素
##结果展示
[1 0 2 4] [0 1 2 3] [[0 1]
[2 3]]
[ 0 0 4 12]
[ 0.84147098 0. 0.90929743 -0.7568025 ]
[1 0 2 4]
[ True True True False]
[False False True False]
16
16
[[0.08224609 0.38212089 0.55997996 0.80955238]
[0.24478396 0.91563735 0.25132588 0.48999968]]
3.735646196850659
[0.32703006 1.29775824 0.81130584 1.29955206]
[1.83389933 1.90174687]
0.08224609481069678
0.9156373483274909
[0.08224609 0.38212089 0.25132588 0.48999968]
[0.08224609 0.24478396]
2.4numpy的基础运算2
import numpy as np
A=np.arange(14,2,-1).reshape((3,4))
print(A)
'''[[14 13 12 11]
[10 9 8 7]
[ 6 5 4 3]]'''
print(np.argmin(A)) #最小值的索引 0
print(np.argmax(A)) #最大值的索引 11
print(np.mean(A))#平均数 8.5
print(np.average(A))
print(np.median(A))#中位数
print(np.cumsum(A))#累加[ 14 27 39 50 60 69 77 84 90 95 99 102]
print(np.diff(A))#累差
'''[[-1 -1 -1]
[-1 -1 -1]
[-1 -1 -1]]'''
print(np.nonzero(A))#依次输出 非零数的 行列坐标
#(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))
print(np.sort(A)) #每行从小到大
'''[[11 12 13 14]
[ 7 8 9 10]
[ 3 4 5 6]]'''
print(np.transpose(A))#A的转置
'''[[14 10 6]
[13 9 5]
[12 8 4]
[11 7 3]]'''
print(A.T)
print((A.T).dot(A))#A的转置乘A
print(np.clip(A,5,9))#输出在5-9之间的元素,其他元素分别用 5 9 替换
'''[[9 9 9 9]
[9 9 8 7]
[6 5 5 5]]'''
2.5numpy索引
import numpy as np
A=np.arange(3,15).reshape(3,4)
print(A)
print(A[1][2])
print(A[1,2])
print(A[1,:])
for line in A: #按行遍历
print(line)
for column in A.T:#按列遍历
print(column)
print(A.flatten())#拉直 [ 3 4 5 6 7 8 9 10 11 12 13 14]
for item in A.flat:#遍历每个元素
print(item)
2.6numpy array合并
import numpy as np
A=np.array([1,1,1])
B=np.array([2,2,2])
C=np.vstack((A,B))
print(C)#上下合并
'''[[1 1 1]
[2 2 2]]'''
print(np.hstack((A,B,A)))#左右合并 [1 1 1 2 2 2 1 1 1]
print(A.shape,C.shape)#(3,) (2, 3)
print(A.T)#因为A是一维的,所以A.T没用 [1 1 1]
#给A加维度
D=A[:,np.newaxis]
print(D,D.shape)# (3, 1)
'''[[1]
[1]
[1]]'''
2.7 Numpy array 分割
import numpy as np
A=np.arange(12).reshape(3,4)
print(A)
'''[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]'''
print(np.split(A,2,axis=1) )#按列分割成两块
'''[array([[0, 1],
[4, 5],
[8, 9]]), array([[ 2, 3],
[ 6, 7],
[10, 11]])]'''
print(np.array_split(A,3,axis=1) )#不等列分割
'''[array([[0, 1],
[4, 5],
[8, 9]]), array([[ 2],
[ 6],
[10]]), array([[ 3],
[ 7],
[11]])]'''
print(np.vsplit(A,3))#上下分割
'''[array([[0, 1, 2, 3]]), array([[4, 5, 6, 7]]), array([[ 8, 9, 10, 11]])]'''
print(np.hsplit(A,2))#左右分割
'''[array([[0, 1],
[4, 5],
[8, 9]]), array([[ 2, 3],
[ 6, 7],
[10, 11]])]'''
2.8 Numpy copy & deep copy
(1)复制并关联
>>> a=np.arange(4)
>>> a
array([0, 1, 2, 3])
>>> b=a
>>> c=a
>>> d=b
>>> a[0]=5
>>> a
array([5, 1, 2, 3])
>>> b is a
True
>>> b
array([5, 1, 2, 3])
>>> c
array([5, 1, 2, 3])
>>> d
array([5, 1, 2, 3])
>>> d[1:3]=[22,33]
>>> d
array([ 5, 22, 33, 3])
>>> a
array([ 5, 22, 33, 3])
>>> b
array([ 5, 22, 33, 3])
>>> c
array([ 5, 22, 33, 3])
(2)只复制,不关联(deep.copy)
a的改变不会引起b的改变。
>>> b=a.copy()
>>> b
array([ 5, 22, 33, 3])
>>> a[3]=44
>>> a
array([ 5, 22, 33, 44])
>>> b
array([ 5, 22, 33, 3])
>>> a[0:2]=[55,66]
>>> a
array([55, 66, 33, 44])
>>> b
array([ 5, 22, 33, 3])