numpy基础

## 1、numpy基础知识
import numpy as np
1、
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)
2、查看type
a = np.array([1,2,3],dtype=np.int)  #默认64位int
print(a.dtype)
b = np.array([1,2,3],dtype=np.int32)
print(b.dtype)
3、定义二维数组(矩阵)
a = np.array([[1,2,3]
              ,[4,5,6]])
print(a)
4、定义矩阵
a1 = np.zeros((3,4))   #3行4列的零矩阵
print(a1)
a2 = np.ones((3,4),dtype=np.int)   #3行4列的全部为1矩阵
print(a2)
a3 = np.empty((3,4))   #3行4列的空矩阵
print(a3)
a4 = np.arange(10,20,2)   #从10到20之间的数,步长为2,不包括20
print(a4)
a5 = np.arange(12).reshape(3,4)   ##3行4列
print(a5)
a6 = np.linspace(1,10,5)  #从1到10的数分成4段5个点
print(a6)
a7 = np.linspace(1,10,6).reshape((2,3))  #从1到10的数分成4段5个点,再重新分成2行3列
print(a7)
5、随机random
a = np.random.random((2,4))
print(a)
6、np.sum()    求和
    np.min()    求最小值
    np.max()    求最大值
print(a)
print(np.sum(a))
print(np.min(a))
print(np.max(a,axis=0))   #axis=0是列数 axis=1是行数
print(np.sum(a,axis=1))   #axis=0是列数 axis=1是行数
7、求最大最小值索引
a = np.arange(2,14).reshape((3,4))
print(a)
print(np.argmin(a))   #最小值的索引
print(np.argmax(a))   #最大值的索引
8、求平均值
print(np.mean(a))
print(np.mean(a,axis=0))   #可以选择对行1还是列0进行求值
print(np.average(a))
9、求中位数
print(np.median(a))
10、逐个累加
print(np.cumsum(a))
11、累差(第二个-第一个,第三个-第二个)
print(np.diff(a))
12、找出非0的数  分别按行和列判断,结果为10
print(np.nonzero(a))
13、排序
a = np.arange(14,2,-1).reshape(3,4)
print(a)
print(np.sort(a))   #每行排序
14、转置
print(a.T)
print(np.transpose(a))
15、将数组中的元素限制在a_min, a_max之间
print(np.clip(a,5,9))   #所有小于5的数变成5,大于9的数变成9
—————————————————————————————
2、numpy索引
import numpy as np
1、输出
a = np.arange(3,15)   #一维
print(a)
print(a[3])
b = np.arange(3,15).reshape(3,4)   #二维,3行4列
print(b)
print('第0行',b[0])   #第0行
print('第二行第1个',b[2][1])  #第二行第1个
print('第二行第1个',b[2][1])  #第二行第1个
print('第二行所有数',b[2:])   #第二行所有数
print('第一列所有数',b[:,1])   #第一列所有数
print('第一行从1到3的值',b[1,1:3])   #第一行从1到2的值
2、输出每一行的数
for row in b:
    print('输出每一行的数',row)
3、输出每一列的数
for column in b.T:
    print('输出每一列的数',column)
4、将多维数组一行输出
print(b.flatten())
5、输出每一个项目  flat只是一个迭代器,所以不能直接b.flat使用
for item in b.flat:
    print(item)
—————————————————————————————
2、array合并
import numpy as np
a = np.array([1,1,1])
b = np.array([2,2,2])

两个array合并:np.vstack((a,b)) np.hstack((a,b))

c = np.vstack((a,b)) #vertical stack上下合并
print(c)
print(a.shape,c.shape)
d = np.hstack((a,b)) #horizontal stack左右合并
print(d)
print(a.shape,d.shape)
print(a[np.newaxis,:])  #给行加了个维度
print(a[np.newaxis,:].shape)
print(a[:,np.newaxis])  #给列加了个维度
#纵向合并
a1 = np.array([1,1,1])[:,np.newaxis]
b1 = np.array([2,2,2])[:,np.newaxis]
d1 = np.hstack((a1,b1))
print(d1)
print(a1.shape,d1.shape)
#多个array合并
e1= np.concatenate((a1,b1,b1,a1))
print('e1',e1)
e2= np.concatenate((a1,b1,b1,a1),axis=0)  #纵向合并
print('e2',e2)
e3= np.concatenate((a1,b1,b1,a1),axis=1)  #横向合并
print('e3',e3)
—————————————————————————————
## 3、array分割
import numpy as np
1、从0-1112个数,分成三行四列

a = np.arange(12).reshape((3,4))
print(a)
#2、对列分成2块
print(np.split(a,2,axis=1))
#3、对行分成3块
print(np.split(a,3,axis=0))
#4、不等量分割
#5、纵向分割,横向分割
print(np.array_split(a,3,axis=1))
print(np.vsplit(a,3))  #纵向分割
print(np.hsplit(a,2))  #横向分割
—————————————————————————————
## 四、numpy的copy和deep copy
import numpy as np
a = np.arange(4)

1.copy,赋值 #b,c,d的值都跟随a改变
print('a',a)
b = a
c = a
d = b
a[0] = 11
print('a',a)
print('b',b)
#b,c,d的值都跟随a改变
print('b is a',b is a)
print('c is ',c is a)
print('d is a',d is a)

2.更改其中一个的赋值,剩下所有都会改变
d[1:3] = [22,33]
print('a,b,c,d',a,b,c,d)
3.deep copy,此时更改a的值不会对b有影响
b = a.copy()
print(b)
a[3] = 44
print("a",a,"new_b",b)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值