python14-------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])
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值