Numpy简介
Numpy:Numerical Python ,即数值Python包,是Python进行科学计算一个基础包。包括:
一个具有矢量运算和复杂广播能力的快速且节省空间的多维数组,称为ndarray(N-dimensional array object);
用于对数组数据进行快速运算的标准科学函数,ufunc(unviersal function object);
用于整合c/c++和fortran代码的工具包;
实用的线性代数,博里叶变换和随机数生成函数。numpy和稀疏矩阵运算包scipy配合使用更加方便。
Numpy的数据结构:ndarray
ndarray介绍
ndarry:N维数组
一种相同类型元素组成的多维数组,元素数量是事先指定好的。
元素的数据类型由dtype(data-type)对象来指定,每个ndarry只有一种dtype。
大小固定,创建好数组时一旦指定好大小,就不会再发生改变。
Numpy的基本操作
array函数接收一个普通的python序列,转成ndarry
导入numpy包
import numpy as np
创建一个二维数组
narr = np.array([[1,2,3,4],[5,6,7,8]])
查看数组的维度(打印结果2)
narr.ndim
查看数组深度和维度打印结果(2L,4L)
narr.shape
查看数组的数据类型,返回结果(dtype(‘int32’))
narr.dtype
|代表分割,4代表保留4位。打印结果array([‘aaaa’,’java’,’pyth’])
np.array([‘aaaaa’,’java’,’python’],dtype=’|s4′)
数组中的数据类型转换,指定为int类型,即使数组中元素为字符串也会自动转换为int。打印结果array([1,2,3])
np.array([‘1′,’2′,’3′],dtype=’int’)
查看数组中的元素个数,返回结果8.
narr.size
利用shape查看复杂维度的数组。
np.array([
[1,2,3,4],
[5,6,7,8]
[3,4,5,6],
[2,2,2,2]
print(arr.shape) #打印结果(2,2,4) shape 打印结果对应每个维度的深度值,有三个维度,分别对应2,2,4的深度值
print(arr[1,0,1]) #打印结果4
ndarry的常见创建方式
zeros函数创建指定长度或形状的全0函数
np.zeros((3,4),np.int)
打印结果:
array([[0, 0, 0, 0],
[0, 0, 0, 0],
[0, 0, 0, 0]])
ones函数创建指定长度或形状的全1数组,同上,填充值为1的数组
empty函数创建一个没有任何具体值的数组(准确的说是一些未初始化的随机值)
range() 和py.arange
range()返回的是range object,而np.nrange()返回的是numpy.adarray()
两者都是均匀地(evenly)等分区间;
range尽可用于迭代,而np.arange作用远不止于此,它是一个序列,可被当做向量使用。
range()不支持步长为小数,np.arange()支持步长为小数
两者都可用于迭代
两者都有三个参数,以第一个参数为起点,第三个参数为步长,截止到第二个参数之前的不包括第二个参数的数据序列
某种意义上,和STL中由迭代器组成的区间是一样的,即左闭右开的区间。[first, last)或者不加严谨地写作[first:step:last)
np.linspace() 生成等差数列
第一个参数值代表起始位置,第二个参数值代表结束位置,第三个参数值代表元素个数
np.linspace(2,19,3)
运行结果:array([ 2. , 10.5, 19. ])
np.logspace() 生成10的幂形式的等比例数列
第一个参数代表10的开始次方,第二个参数代表10的结束次方,第三个参数代表生成的元素个数。
np.logspace(2,10,3)
输出结果:array([1.e+02, 1.e+06, 1.e+10]) #1.e是科学计数法,代表10的次方
np.reshape()维度转化
np.arange(1,9).reshape((2,4)) #将[1,2,3,4,5,6,7,8]转为一个二个维度的数组
输出array([[1, 2, 3, 4],[5, 6, 7, 8]])
np.arange(1,9).reshape((2,2,2)) #转化成一个三个维度的数组
生成随机数组
np.random.random((2,3,4)) #生成0-1之间的随机数组
==arr.astype()==对数组数据类型进行转换
arr = np.array([1,2,3,4])
arr.astype(‘float’) #转换数组里的数据为float类型
arr.dtype #查看数组数据类型
常见的数据类型
名称 描述
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 位浮点数(实数部分和虚数部分)
一些类型的缩写
名称 描述
b 布尔型
i (有符号) 整型
u 无符号整型 integer
f 浮点型
c 复数浮点型
m timedelta(时间间隔)
M datetime(日期时间)
O (Python) 对象
S, a (byte-)字符串
U Unicode
V 原始数据 (void)
矩阵相乘和矩阵积
在numpy中矩阵可以直接做加减乘除运算
arr1 = np.array([1,2,3,4])
arr2 = np.array([2,3,4,5])
arr1*arr2则为对位相乘
矩阵积np.dot(a, b)
a = np.array([[1,2],[3,4],[11,12]])
b = np.array([[5,6,13],[7,8,14]])
np.dot(a,b)
输出结果:array([[ 19, 22, 41],
[ 43, 50, 95],
[139, 162, 311]])
解释:例如
[a1,b1,c1],
[d1,e1,f1]
[a2,b2],
[d2,e2],
[f2,g2]
做点积运算则:
[a1a2+b1 * d2+c1 f2,a1b2+b1e2+c1f2],
[d1a2+e1d2+f1f2 , d1b2+e1e2+f1*g2]
Original: https://blog.csdn.net/weixin_55107651/article/details/123312290
Author: NICEXICHEN
Title: 数据分析工具pandas总结
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/700029/
转载文章受原作者版权保护。转载请注明原作者出处!