Python基础之数组和向量化计算总结
一、多维数组
1、生成ndarray (array函数)
.np.array()生成多维数组
例如:import numpy as np
data1=[6,7.5,8,0,1] #创建简单的列表
print(data1)
arr1=np.array(data1) #将列表创建数组
print(arr1)
2、ndarry的数据类型
(1)dtype() #获取数组元素类型(浮点数、复数、整数等)
data=np.random.randn(2,3) #生成随机数组
print(data)
print(data.shape) #返回数组的形状
print(data.dtype)
(2)转化数组的数据类型:astype() astype生成一个新的数组
import numpy as np
a=np.array([0.11,2.2,3])
print(a)
b=a.astype(np.int)
print(b) 补充:python中type 获取数据类型
3、numpy数组算术
(1)逐元素操作
arr=np.array([[1.,2.,3.],[4.,5.,6.]])
print(arr)
print(arr*arr)
4、索引与切片
(1)基础索引与切片
arr=np.arange(10)
print(arr)
print(arr[5:8])
arr[5:8]=12
print(arr)
(2)布尔索引
names=np.array(["Bob","Joe","Will","Bob","Will","Joe","Joe",])
print(names=="Bob") #结果:[ True False False True False False False]
5、数组转置与换轴
(1)arr.T #数组转置
补充:简单的一维和二维数组的转置就是线性代数中的行列相互交换。而对于高维数组的转置:
import numpy as np
a = np.arange(12).reshape(2, 2, 3)
#创建一个三维矩阵,由2个2*3的矩阵块组成
print(a) #结果为:
[[[ 0 1 2] #运行结果:其中每个元素都有其唯一的坐标(x,y,z)例如:0的标为(0,0,0),1的坐标为:(0,1,0)........11的坐标为(1,1,2)
[ 3 4 5]]
[[ 6 7 8]
[ 9 10 11]]]
Print(a.T) #Output为:数组变为了3个2*2的矩阵了。而各元素的坐标变为:0:(0,0,0),1:(1,0,0),........11:(2,1,1)每个元素坐标的,其实该T操作等同于后面两种方法a.transpose(2,1,0)中x轴和z轴的交换以及a.swapaxes(0,2)
[[[ 0 6]
[ 3 9]]
[[ 1 7]
[ 4 10]]
[[ 2 8]
[ 5 11]]]
(2)内积:np.dot() x.dot()等价于np.dot(x,y)
arr=np.random.randn(6,3)
print(arr)
print(arr.T)
print(np.dot(arr.T,arr))
(3)换轴:transpose()
对于高维数组,transpose()方法的参数需要得到一个由轴编号(轴编号自0开始)序列构成的元组才能对轴进行转置,只需要调换轴对应数字参数的顺序就可以将数组进行轴的变换。
arr=np.arrange(16).reshape((2,2,6))
arr.transpose((1,0,2)) #将第二个轴和第一个轴变换位置
运行结果为:[[[ 0 1 2 3]
[ 8 9 10 11]]
[[ 4 5 6 7]
[12 13 14 15]]]
Swapaxes方法,直接进行轴的交换
二、函数
1、一元通用函数
(1)平方根 sqrt()
arr=np.arange(10)
print(arr)
print(np.sqrt(arr))
(2)自然指数值 exp()
print(np.exp(arr))
(3)返回数组的小数部分和整数部分 modf()
arr=np.random.randn(7)*5
print(arr)
remainder,whole_part=np.modf(arr)
print(remainder)
print(whole_part)
2、二元通用函数
(1)最大值 maximum()
x=np.random.randn(8)
print(x)
y=np.random.randn(8)
print(y)
print(np.maximum(x,y))
3、矩阵分解的标准函数集 ???
(1)、numpy.linalg()
(1.1)、方阵的逆矩阵 inv()
(1.2)、QR分解 qr()
from numpy.linalg import inv,qr
x=np.random.randn(5,5)
print(x)
mat=x.T.dot(x) #内积
print(inv(mat)) #求逆
q,r=qr(mat)
print(r)
4、随机数生成器
numpy.random()
注意:产生随机数random.randn()和random.rand(n)的区别random.randn(n)是从标准正态分布中返回一个或者多个样本值,random.rand(n,m)表示由位于(0,1)中的随机数填充的n*m的矩阵。
三、数组编程
1、将条件逻辑作为数组操作 where()
xarr=np.array([1.1,1.2,1.3,1.4,1.5])
yarr=np.array([2.1,2.2,2.3,2.4,2.5])
cond=np.array([True,False,True,True,False]) #是否是x的值
result=np.where(cond,xarr,yarr)
print(result) #result([1.1,2.2,1.3,1.4,2.5])
2、数学和统计方法 mean()平均值、sum()求和、cumsum()#从0元素来累计和、cumprod() # 从1元素来累计积 ???
arr=np.random.randn(5,4)
print(arr)
print(arr.mean()) #取总均值
print(np.mean(arr))
print(arr.mean(axis=1)) #按列数取均值
print(arr.mean(1))
3、布尔值数组的方法 any() all() ???
print(arr.sum(0)) #从0元素来是加总
arr=np.array([[0,1,2],[3,4,5],[6,7,8]])
print(arr)
print(arr.cumsum(axis=0)) #axis=0行数加总
print(arr.cumprod(axis=1)) #axis=1列数加总
bools=np.array([False,False,True,False])
print(bools.any()) #至少有一个
print(bools.all()) #全部都是
4、计算唯一值并排序:unique()
ints=np.array([3,3,3,2,2,1,1,4,4])
print(np.unique(ints)) #唯一值 结果:[1 2 3 4]
Python基础之数组和向量化计算总结的更多相关文章
- 《利用python进行数据分析》读书笔记--第四章 numpy基础:数组和矢量计算
http://www.cnblogs.com/batteryhp/p/5000104.html 第四章 Numpy基础:数组和矢量计算 第一部分:numpy的ndarray:一种多维数组对象 实话说, ...
- 利用Python进行数据分析——Numpy基础:数组和矢量计算
利用Python进行数据分析--Numpy基础:数组和矢量计算 ndarry,一个具有矢量运算和复杂广播能力快速节省空间的多维数组 对整组数据进行快速运算的标准数学函数,无需for-loop 用于读写 ...
- 《利用Python进行数据分析·第2版》第四章 Numpy基础:数组和矢量计算
<利用Python进行数据分析·第2版>第四章 Numpy基础:数组和矢量计算 numpy高效处理大数组的数据原因: numpy是在一个连续的内存块中存储数据,独立于其他python内置对 ...
- 【学习笔记】 第04章 NumPy基础:数组和矢量计算
前言 正式开始学习Numpy,参考用书是<用Python进行数据清洗>,计划本周五之前把本书读完,关键代码全部实现一遍 NumPy基础:数组和矢量计算 按照书中所示,要搞明白具体的性能差距 ...
- python数据分析---第04章 NumPy基础:数组和矢量计算
NumPy(Numerical Python的简称)是Python数值计算最重要的基础包.大多数提供科学计算的包都是用NumPy的数组作为构建基础. NumPy的部分功能如下: ndarray,一个具 ...
- 利用Python进行数据分析 第4章 NumPy基础-数组与向量化计算(3)
4.2 通用函数:快速的元素级数组函数 通用函数(即ufunc)是一种对ndarray中的数据执行元素级运算的函数. 1)一元(unary)ufunc,如,sqrt和exp函数 2)二元(unary) ...
- 《利用python进行数据分析》NumPy基础:数组和矢量计算 学习笔记
一.有关NumPy (一)官方解释 NumPy is the fundamental package for scientific computing with Python. It contains ...
- 《利用Python进行数据分析》笔记---第4章NumPy基础:数组和矢量计算
写在前面的话: 实例中的所有数据都是在GitHub上下载的,打包下载即可. 地址是:http://github.com/pydata/pydata-book 还有一定要说明的: 我使用的是Python ...
- 数据分析之Numpy基础:数组和适量计算
Numpy(Numerical Python)是高性能科学计算和数据分析的基础包. 1.Numpy的ndarray:一种多维数组对象 对于每个数组而言,都有shape和dtype这两个属性来获取数组的 ...
随机推荐
- .net core2.x - 关于工作单元(UnitOfWork) 模式
概要:在搭建框架,顺手说下写下,关于unitofwork,可能你理解了,可能你还不理解,可能与不可能不是重点,重点是感兴趣就看看吧. 1.工作单元(unitofowork)是什么(后面简写uow)? ...
- docker环境中安装node、pm2,映射项目文件守护程序
1.docker安装完成后,获取对应版本,可自定义node版本,默认为最新版本. git pull node:<version> 2.编写Dockerfile,在文件中添加安装pm2命令. ...
- XV Open Cup named after E.V. Pankratiev. GP of America
A. Area of Effect 首先最优解中必有一个点在圆的边界上. 若半径就是$R$,则枚举一个点,然后把剩下的事件极角扫描即可,时间复杂度$O(m(n+m)\log(n+m))$. 否则圆必然 ...
- 4. Spring 如何通过 XML 文件配置Bean,以及如何获取Bean
在 Spring 容器内拼凑 bean 叫做装配.装配 bean 的时候,你是在告诉容器,需要哪些 bean ,以及容器如何使用依赖注入将它们配合在一起. 理论上,bean 装配的信息可以从任何资源获 ...
- django缓存、信号、序列化
本篇导航: Django的缓存机制 Django的信号 Django的序列化 一.Django的缓存机制 1.缓存介绍 1)缓存的简介 在动态网站中,用户所有的请求,服务器都会去数据库中进行相应的增, ...
- P2678 跳石头---(二分答案)
题目背景 一年一度的“跳石头”比赛又要开始了! 题目描述 这项比赛将在一条笔直的河道中进行,河道中分布着一些巨大岩石.组委会已经选择好了两块岩石作为比赛起点和终点.在起点和终点之间,有 NNN 块岩石 ...
- git开发过程中的使用流程
001.创建仓库 002.新建项目 003.初始化仓库 这一步不需要做 git init : 文件夹中会多出一个隐藏的.git文件 004.克隆项目 git clone <项目地址> 0 ...
- react路由
针对多个列表导航公用一个组建,然后 有两种路由方式 1.import {HashRouter as Router,Route,Link} from 'react-router-dom' 不过这个路由中 ...
- 解决C#中FileSystemWatcher类的Changed事件触发多次的问题
public static void WatchFile() { FileSystemWatcher watcher = new FileSystemWatcher(); watcher.Path = ...
- 电子产品使用感受之——我的Mac只有256GB,我的照片库该怎么办?
说实话我使用过的Mac中最大的默认存储可能就是2011年开始使用的MacBook Pro了,机器型号大概是MC700,这台机器当年自带320GB 5400转机械硬盘,直到2016年因为使用率太高,机械 ...