Numpy基础:数组和矢量计算
来源:互联网 发布:卡在windows启动界面 编辑:程序博客网 时间:2024/05/16 15:34
ndarray:多维数组对象
以下内容参考书《利用Python进行数据分析》。
numpy 官方的学习文档
https://docs.scipy.org/doc/numpy-dev/user/quickstart.html
1.创建ndarray
创建数组最简单的方法是使用array 函数。它接受一切序列型的对象。
import numpy as npdata1 = [6,7.5,8,0,1]arr1 = np.array(data1)arr1Out[4]: array([ 6. , 7.5, 8. , 0. , 1. ])
每一个数组都有一个 shape 和一个 dtype
arr1.shapeOut[5]: (5L,)arr1.dtypeOut[6]: dtype('float64')
zeros 和函数 ones 创建指定 长度或形状的全0全1数组。empty创建没有任何具体值的数组
np.zeros(7)Out[9]: array([ 0., 0., 0., 0., 0., 0., 0.])np.ones((2,3))Out[10]: array([[ 1., 1., 1.], [ 1., 1., 1.]])np.empty((2,3))Out[11]: array([[ 0., 0., 0.], [ 0., 0., 0.]])
2.数据类型转换
astype
整数转为浮点数时,小数部分会被截断
arr = np.array([3.7,-1.2,-2.6,0.5])arrOut[14]: array([ 3.7, -1.2, -2.6, 0.5])arr.astype(np.int32)Out[15]: array([ 3, -1, -2, 0])
某字符串数组表示的全是数字也可以用astype转换
num_str = np.array(['1.25','-3.6','24'],dtype = np.string_)num_str.astype(float)Out[18]: array([ 1.25, -3.6 , 24. ])
3.数组和标量之间的运算
大小相等的数组间的任何算术运算都会将运算应用到元素级
4.索引和切片
索引:选取数组的子集或单个元素
下标从0开始,左闭右开
arr = np.arange(10)arrOut[20]: array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])arr[5:8]Out[21]: array([5, 6, 7])arr[5:8]=12arrOut[23]: array([ 0, 1, 2, 3, 4, 12, 12, 12, 8, 9])arr_slice = arr[5:8]arr_slice[1]=123arrOut[26]: array([ 0, 1, 2, 3, 4, 12, 123, 12, 8, 9])arr_slice[:]=64arrOut[28]: array([ 0, 1, 2, 3, 4, 64, 64, 64, 8, 9])
5.数组的转置和轴对换
计算矩阵内积
arr = np.random.randn(6,3)np.dot(arr.T,arr)Out[30]: array([[ 8.46291352, -6.53225698, -0.56153338], [-6.53225698, 9.06106344, 2.52970761], [-0.56153338, 2.52970761, 5.57303457]])
6.通用函数
通用函数是一种对ndarray中的数据执行元素级运算的函数
square: 计算各元素的平方
sign:计算元素的正负号
ceil:大于等于该值的最小整数
floor:小于等于该值的最大整数
rint: 四舍五入,保留dtype
modf:将数组以小数部分和整数部分两个独立的数组形式返回
7.将条件逻辑表述为数组运算
numpy.where 函数
两个值数组和一个布尔数组
xarr = np.array([1.1,1.2,1.3])yarr = np.array([2.1,2.2,2.3])cond = np.array([True,False,True)]
cond = np.array([True,False,True])result = np.where(cond,xarr,yarr)resultOut[7]: array([ 1.1, 2.2, 1.3])
将随机数组的正值替换为2
arr = np.random.randn(3,3)arrOut[13]: array([[-0.66787606, 0.94647356, -0.50731958], [ 1.09635393, -0.24440493, 0.33180244], [ 0.11577465, -0.36681824, 0.87039169]])np.where(arr > 0,2,arr)Out[14]: array([[-0.66787606, 2. , -0.50731958], [ 2. , -0.24440493, 2. ], [ 2. , -0.36681824, 2. ]])
8.排序
arr = np.random.randn(5)arrOut[20]: array([-1.35004544, 0.83532214, 1.01864971, 0.60209129, 0.18729369])arr.sort()arrOut[22]: array([-1.35004544, 0.18729369, 0.60209129, 0.83532214, 1.01864971])
多维数组可以对某一维进行排序,只需要将轴编号传给sort即可
arr = np.random.randn(4,3)arrOut[28]: array([[ 1.65426166, 0.72345798, 0.54172487], [ 0.42299115, 0.26661342, 0.44222104], [ 0.62432732, 0.6765546 , -0.95483994], [ 1.25453269, -0.15451337, -0.31239763]])arr.sort(1)arrOut[30]: array([[ 0.54172487, 0.72345798, 1.65426166], [ 0.26661342, 0.42299115, 0.44222104], [-0.95483994, 0.62432732, 0.6765546 ], [-0.31239763, -0.15451337, 1.25453269]])
9.数组的集合运算
unique(x) 计算x中的唯一元素,并返回有序结果
intersect1d(x,y) 计算x和y中的公共元素,并返回有序结果
union1d(x,y) 计算x和y的并集,并返回有序的结果
ints = np.array([1,1,1,2,3,4,4,3])np.unique(ints)Out[32]: array([1, 2, 3, 4])
10.线性代数
常用的numpy.linalg 函数、
diag 对角线元素
dot 矩阵乘法
trace 计算对角线元素的和
det 计算行列式
eig 方阵的特征值和特征向量
inv 方阵的逆
qr QR分解
svd 奇异值分解
lstsq 计算Ax=b 的最小二乘解
11. 随机数生成
- Numpy基础:数组和矢量计算
- Numpy基础:数组和矢量计算
- NumPy基础:数组和矢量计算
- 【11月12日】NumPy基础:数组和矢量计算
- 8、NumPy 基础:数组和矢量运算
- Python数据分析|第4章 NumPy基础:数组和矢量计算
- Numpy基础 --数组和矢量计算 利用Python进行数据分析读书笔记
- 《利用Python进行数据分析》笔记---第4章NumPy基础:数组和矢量计算
- numpy数组及矢量计算
- Numpy基础:数组、矢量计算以及ufunc通用函数使用
- Python之NumPy实践之数组和矢量计算
- python——NumPy:数组和矢量计算
- numpy数组矢量化
- 计算几何基础——矢量和叉积
- 计算几何基础——矢量和叉积
- 计算几何基础——矢量和叉积
- COPY 计算几何基础——矢量和叉积
- Numpy数组基础
- hdu 6052单调栈 双指针
- CSS深入理解(1)margin
- DPDK 内存管理(二)(rte_mempool 内存管理)
- 模拟实现atoi函数
- android 城市选择
- Numpy基础:数组和矢量计算
- liunx小结
- 题目1046:求最大值
- @RequiresPermissions 在controller上不起作用
- MOOC清华《程序设计基础》第7章:读文件操作
- 一个让人灵光一闪的数组C++类Array设计,可以此作为范本进行其他的C++类编写
- shell脚本
- JAVA中ListIterator和Iterator详解与辨析
- 将二叉搜索树转换成一个排序的双向链表--中序线索化的变型。