Numpy的使用

  1. Numpy的一些属性
    import numpy as np
array = np.array([[1,2,3],[4,5,6]]) # 创建二维数组

1.打印矩阵
	print(array)
2.数组的维度
	array.ndim
3.数组的形状
	array.shape
4.数组的元素个数
	array.size
  1. 如何创建数组/矩阵
1.指定数据类型dtype: int16/32/64, float16/32/64
	a = np.array([1,2,3],dtype = np.int)
2.创建矩阵
	a = np.array([[1,2,3],[4,5,6]]) # 2行三列矩阵
3.创建全0矩阵
	a = np.zeros((3,4)) # 传递行列
 - 创建一个空矩阵(不建议使用,几乎为0)
	a = np.empty((3,4))
5.类似python的创建数列
	a = np.arange(start,end,step)
	* 使用reshape方法可以创建时修改维度
	a = np.arange(12).reshape((3,4)) # 但要保证个数一致
6.生成从start到end的线段
	a = np.linspace(start,end,num)[.reshape(rows,columns)] # num为段数
  • numpy基础运算1
a = np.array([10,20,30,40])
b = np.arange(4)
1.基本运算
	c = a*b
	c = a**2
	c = 10*np.sin(a) # 对a的每一个元素求sin值
2.逻辑判断
	print(b < 3) # 若元素<3则在其位置上为True,否则为False
3.矩阵运算
	a = np.array([[1,1],[0,1]])
	b = arange(4).reshape((2,2))
	c = a*b # 位置上的逐个相乘
	c = np.dot(a,b) # 矩阵乘法 
	c = a.dot(b) # 不同表现形式
4.随机矩阵
	a = np.random.random((rows,columns))
	np.sum(a,axis), np.min(a), np.max(a) # 常用函数
	* axis = 0表示从每一行中求值;axis = 1表示从每一列中求职
  • numpy基础运算2
a = np.arange(2,14).reshape((3,4))
 * 其中部分计算都可以指定axis轴方向 0 为行 1 为列
 * 
1.计算最小值的索引
	np.argmin(a) # 索引从0开始
2.计算最大值的索引
	np.argmax(a)
3.计算数组的平均值
	np.average(a) == a.mean() == np.mean(a)\
4.计算数组的中位数
	np.median(a)
5.数组累加
	np.cumsum(a) # 第n个位置是前n-1个值的和
6.数组累差
	np.diff(a) # 每一行前后两个位置上的差值
7.找出非零的数
	np.nonzero(a) # 返回两个一维数组分别为元素的行数和列数
8.逐行进行排序
	np.sort(a)
9.矩阵的转置
	np.transpose(a) == a.T 
	e.g: (a.T).dot(a) # 矩阵的转置与矩阵相乘
10.clip功能:将大于指定大数的值全为该大数,小于指定小数的值全为该小数
	np.clip(a)
11.矩阵的求逆
	a = np.arange(16).reshape((4,4)
	A = np.matrix(a)
	A.I # A矩阵的求逆
* numpy中只有将数组声明为矩阵才能求逆,且逆矩阵必须n*n
  • numpy的索引
a = np.arange(3,15).reshape((3,4)) 
# 输出第二行
print(a[2]) # 从0开始计数
print(a[2,:])

# 第二行第二列
print(a[2][2])

# 第一列
print(a[:,1])

# 第一行从第一到第二列
print(a[1,1:2]) # 类似python列表索引第二列取不到

# 循环打印行,默认打印行
for row in a;
	print(row)

# 循环打印列
for column in a.T: # 将矩阵转置再打印
	print(column)

# 通过迭代打印所有元素
for item in a.flat:
	print(item)
 * a.flat是返回一个数组的迭代器 a.flatten()返回a的一维数组
  • array的合并
a = np.array([1,1,1])
b = np.array([2,2,2])

1.向下合并
c = np.vstack((a,b)) # vertical stack
# 结果是[[1,1,1],[2,2,2]] shape为2*3

2.左右合并
d = np.hstack((a,b)) # horizontal stack
# 结果是 [1,1,1,2,2,2] shape为6

3.将一维数列转换横向或竖向数列
a[:,np.newaxis] # shape为(3,1) 竖向
* a.T 不能将一维数列转置
* 横向添加维度 a[np.newaxis,:]

4.多数组合并,并指定方向
c = np.concatenate((a,b,b,a),axis = 0) # 指定为行的合并
  • numpy的array分割
a = np.arange(12).reshape((3,4))

1.纵向分割
b,c = np.split(a,2,axis=1) # 对矩阵a在列方向分成两部分

2.横向分割
b,c,d = np.split(a,3,axis = 0) # 对矩阵a在行方向上分成三部分

3.不等的分割
np.array_split(a,3,axis = 1) # 将4列分为3部分
  • numpy的copy和deepcopy
a = np.arange(4)
b = a
c = a
d = b
1.a[0] = 11
当修改a时,b、c、d都会进行改变

2.取消关联仅仅赋值
b = a.copy() # deep copy
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值