numpy常用函数

目录

  • 安装及介绍
  • 一.ndarray的创建
    • 1.一维数组
    • 2.多维数组
  • 二.ndarray的数据类型和属性
    • 1.数据类型
    • 2.属性
  • 三.ndarry的查询
    • 1.根据切片和索引查询
    • 2.迭代输出所有元素
    • 3.排序后输出
    • 4.筛选选择后输出
  • 四.ndarry的修改
    • 1.矩阵形状重塑
    • 2.将数组降维一维
    • 3.增加维度
  • 五.ndarray的运算
    • 1.一般运算
    • 2.统计运算
    • 3.逆矩阵与转置
    • 4.判断函数
  • 六.矩阵的操作
    • 1.矩阵合并
    • 2.矩阵分割
    • 3.矩阵的深拷贝与浅拷贝
  • 七.numpy读取保存文件txt文件

安装及介绍

​ Numpy用于快速处理任意维度数组,支持常见数组合矩阵操作,比直接使用Python简单方便。

​ 安装:pip install -i https://pypi.tuna.tsinghua.edu.cn/simple numpy
​ 使用:import numpy as np

一.ndarray的创建

1.一维数组

np.arange([start,] stop[, step,], dtype=None) 	# 生成[start,stop)的等差数组(默认start=0,step=1,dtype=int32或float64)
np.linspace(start,stop,num=50)					# 生成 [start,stop] 含num个数的等差数组,num默认为50
np.logspace(start,stop,num=50,base=10.0)		# 生成 [start,stop] 含num个数的等比数组,num默认为50,base为对数log的底数

2.多维数组

np.array(object, dtype=None)     				# 根据object生成多维数组(默认dtype=int32或float64)
np.random.normal(μ=0.0,θ=1.0,size)   			# 均值μ,标准差θ的高斯正态分布, size为int或tuple
np.random.randn(d0, d1, ..., dn)    			# 多维标准正态分布
np.random.rand(d0, d1, ..., dn)     			# 生成[0,1)的多维均匀分布
np.random.random(size)              			# 生成[0,1)的随机浮点数数组,size为int或tuple
np.random.randint(low, high=None, size=None, dtype=None)
												# 生成[0,1)的随机整数数组,size为int或tuple
z = np.zeros(shape, dtype=None)         		# 0矩阵,shape:int or tuple of ints
z = np.ones(shape, dtype=None)                  # 1矩阵,shape:int or tuple of ints
z = np.empty(shape, dtype=None)                 # 无穷小矩阵,shape:int or tuple of ints(元素接近0但不是0)
e = np.eye(N, M=None, k=0, dtype=float) 		#二维单位矩阵,N行M列,默认M=N,k表示主对角线向上或向下移几次

二.ndarray的数据类型和属性

1.数据类型

bool_		# 布尔型数据类型(True 或者 False)
int_		# 默认的整数类型(类似于 C 语言中的 long,int32 或 int64)
intc		# 与 C 的 int 类型一样,一般是 int32 或 int 64
intp		# 用于索引的整数类型(类似于 C 的 ssize_t,一般情况下仍然是 int32 或 int64)
int8		# 字节(-128 to 127)
int16		# 整数(-32768 to 32767)
int32		# 整数(-2147483648 to 2147483647)
int64		# 整数(-9223372036854775808 to 9223372036854775807)
uint8		# 无符号整数(0 to 255)
uint16		# 无符号整数(0 to 65535)
uint32		# 无符号整数(0 to 4294967295)
uint64		# 无符号整数(0 to 18446744073709551615)
float_		# float64 类型的简写
float16		# 半精度浮点数,包括:1 个符号位,5 个指数位,10 个尾数位
float32		# 单精度浮点数,包括:1 个符号位,8 个指数位,23 个尾数位
float64		# 双精度浮点数,包括:1 个符号位,11 个指数位,52 个尾数位
complex_	# complex128 类型的简写,即 128 位复数
complex64	# 复数,表示双 32 位浮点数(实数部分和虚数部分)
complex128	# 复数,表示双 64 位浮点数(实数部分和虚数部分)

2.属性

ndim		# 秩,即轴的数量或维度的数量
shape		# 数组的维度,对于矩阵,n 行 m 列
size		# 数组元素的总个数,相当于 .shape 中 n*m 的值
dtype		# ndarray 对象的元素类型
#以下部分基本用不到
itemsize	# ndarray 对象中每个元素的大小,以字节为单位
flags		# ndarray 对象的内存信息
real		# ndarray元素的实部
imag		# ndarray 元素的虚部
data		# 包含实际数组元素的缓冲区,由于一般通过数组的索引获取元素,所以通常不需要使用这个属性。

三.ndarry的查询

1.根据切片和索引查询

同python

2.迭代输出所有元素

a = np.array(...)
for x in np.nditer(a):
    print (x, end=", " )
print ('\n')

3.排序后输出

np.sort(a, axis=-1, kind=None)
	# axis:沿着该轴排列
    # kind:排序算法{'quicksort'(默认), 'mergesort', 'heapsort', 'stable'}

4.筛选选择后输出

np.where(condition)
# 例如
    x = np.arange(9.).reshape(3,  3)  
    y = np.where(x >  3)
    print (x[y])
'''    
    [[0. 1. 2.]
     [3. 4. 5.]
     [6. 7. 8.]]
    (array([1, 1, 2, 2, 2]), array([1, 2, 0, 1, 2]))
    [4. 5. 6. 7. 8.]
'''

四.ndarry的修改

1.矩阵形状重塑

arr.reshape(n)    		# 重塑为 n列的一维矩阵
arr.reshape(m,n)  		# 重塑为 m行n列的二维矩阵
arr.reshape(m,n,l)		# 重塑为 三维矩阵
arr.squeeze()			# 移除所有维度为1的维度

2.将数组降维一维

x_new = x.flatten()		# 返回一个新的一维x数组
x_new = x.ravel()		# 返回x一维数组的引用
x_new = x.reshape(-1)

3.增加维度

arr = arr[np.newaxis,:] # 给矩阵增加一个行的维度
arr = arr[:,np.newaxis] # 给矩阵增加一个列的维度
np.atleast_2d(arr)      # 判断矩阵是不是至少是一个二维的,不是的话变成2维返回

五.ndarray的运算

1.一般运算

a1 = np.array([...])
a2 = np.array([...])

#1.按位各元素进行加减乘除取余取整
print(a1 + a2)         		# 加法,按位相加;- * / ** // % 同理
print(a1** a2)         		# 求幂,按位求幂,a1的元素为底,a2的元素为指数
print(a1 + m)          		# 每个元素都加m;- * / ** // % 同理(广播机制)
a3 = a1 > 3            		# 判断a1的每个元素是否大于3,返回一个bool矩阵
np.multiply(a1,a2)	   		# 矩阵点乘,和a1 * a2一个效果
#2.矩阵的乘积
np.dot(a1,a2) 或 a1.dot(a2)

2.统计运算

# 注意:不指定axis时最后的结果是按照数组一维后的求取结果

np.sum(arr,axis=None)       # 求矩阵沿指定轴的元素之和
arr.sum(axis=None)
np.mean(arr,axis=None)      # 求矩阵沿指定轴的均值
arr.mean(axis=None)
np.min(arr,axis=None)       # 求矩阵沿指定轴的最小值
arr.min(axis=None)
np.max(arr,axis=None)       # 求矩阵沿指定轴的最大值
arr.max(axis=None)
np.argmax(arr,axis=None)    # 求矩阵沿指定轴的最大值的索引
arr.argmax(axis=None)
np.argmin(arr,axis=None)    # 求矩阵沿指定轴的最小值的索引
arr.argmin(axis=None)
np.median(arr,axis=None)    # 求矩阵沿指定轴的中值
np.sqrt(arr)            	# 矩阵各元素开方
np.square(arr)				# 矩阵各元素平方
np.clip(arr,a,b)        	# 矩阵各元素小于a时变为a,大于b时变为b,其他不变

3.逆矩阵与转置

arr.T 或	np.transpose(arr)	# 返回一个arr的转置矩阵
arr.I						 # 返回一个arr的逆矩阵
np.linalg.det(arr) != 0.0    # 判断arr是不是可逆矩阵,返回True或False

4.判断函数

np.all()
np.all(score[0:2, :] > 60) 	# 判断前两行[0:2, :]的数据是否全大于60
np.any()
np.any(score[0:2, :] > 80) 	# 判断前两行[0:2, :]的数据是否有大于80

六.矩阵的操作

1.矩阵合并

np.vstack((arr1,arr2,arr3)))            # 垂直合并,列数相同
np.hstack((arr1,arr2)))                 # 水平合并,行数相同
np.concatenate((arr1,arr2,arr3))        # 垂直合并,列数相同
np.concatenate((arr1,arr2,arr3),axis=0) # 垂直合并,列数相同
np.concatenate((arr1,arr2,arr3),axis=1) # 水平合并,行数相同

2.矩阵分割

np.split(arr,n,axis=0)                  # 垂直等份切割为n个矩阵,不等份报错
np.split(arr,n,axis=1)                  # 水平等份切割为n个矩阵,不等份报错
np.vsplit(arr,n)                        # 垂直等份切割为n个,不等份报错
np.hsplit(arr,n)                        # 水平等份切割为n个,不等份报错
np.array_split(arr,n,axis=0)            # 垂直不等分切割为n个,前边分的元素多
np.array_split(arr,n,axis=1)            # 水平不等分切割为n个,前边分的元素多

3.矩阵的深拷贝与浅拷贝

arr2 = arr1         					# 赋值操作为浅拷贝,指向内存同一对象地址
arr2 = arr1.copy()  					# 深拷贝,内存地址不一样

七.numpy读取保存文件txt文件

np.genfromtxt('文件名路径',delimiter=',')     #数据读取为一个二维数组;每组用逗号,隔开
                                             	#其他参数:
                                             		#skip_header=12,(跳过文件前12行数据)
                                             		#skip_footer=12,(跳过文件后12行数据)
np.loadtxt(fname, dtype=float, delimiter=',')
np.savetxt(fname, ndarray, fmt='%.18e', delimiter=",")

你可能感兴趣的:(数据分析工具,python,人工智能)