(一)NumPy基础:数组和矢量计算
一、创建ndarray
1、各种创建函数的使用
import numpy as np
#创建ndarray
#1、array方法
data1 = [[6, 7.5, 8, 0, 1], [2, 8, 9.5, 10, 8]]
# 生成数组
arr1 = np.array(data1)
'''
shape-------->数组的形状
dtype-------->数组的数据类型
ndim--------->数组的维度
'''
print(arr1.shape, arr1.dtype, arr1.ndim)
'''
arange------->类似于range,返回数组
ones---------->参数是一个元祖,返回全一数组
ones_like----------->返回相同形状的数组,参数是数组
eye----------->单位矩阵
'''
print(np.arange(10))
print(np.zeros((3, 3)))
print(np.ones_like(arr1))
print(np.eye(10))
二、adarray的数据类型
1、dtype是一个属性,他可以确定一个数组的数据类型
import numpy as np
data1 = [[1, 2, 3, 4], [8, 9, 10, 11]]
#数据类型是一个类型名加一个表示各元素位长的数字
narr1 = np.array(data1, dtype = np.float64)
print(narr1)
2、数据类型转换(astype)
import numpy as np
data1 = [[1.8, 2.9, 3.7, 4], [8, 9, 10.8, 11]]
#数据类型是一个类型名加一个表示各元素位长的数字
narr1 = np.array(data1, dtype = np.float64)
#函数astype返回仍是数组,可以设置类型
print(narr1.astype(np.int64))
三、数组与标量的运算
数组可以使你不用编写循环即可对数据执行批量运算,通常叫做矢量化
import numpy as np
data1 = [[1, 2, 3, 4], [5, 6, 7, 8]]
narr1 = np.array(data1)
#乘法运算
print(narr1*narr1)
#减法运算
print(narr1-narr1)
#除法运算
print(1/narr1)
#开方运算
print(narr1**2)
四、基本的索引和切片
1、将一个标量值赋给一个切片时,该值会自动传播到整个选区,跟列表最重要的区别在于,数组切片是原始数组的视图,数据不会被复制,视图上的任何修改都会直接反映到源数组上
import numpy as np
arr = np.arange(10)
print(arr) #([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
print(arr[5]) #5
print(arr[5:8]) #[5, 6, 7]
arr[5:8] = 12 #对arr[5:8]赋值,使得原数组改变
print(arr) '''
即使将切片赋予一个新的变量,改变新
变量的值,仍然会改变原数组
'''
arr_slice = arr[5:8]
arr_slice[1] = 12345
print(arr) #[ 0 1 2 3 4 12 12345 12 8 9]
2、索引
import numpy as np
arr2d = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(arr2d)
print(arr2d[0]) #访问第0行
print(arr2d[0][1]) #访问第0行,第1列
print(arr2d[0, 1]) #访问第0行,第1列 arr3d = np.array([[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]]])
print(arr3d[0, 1, 1]) #5
3、布尔型索引
import numpy as np
names = np.array(["Bob", 'Joe', 'Will', 'Bob', 'Will', 'Joe', 'Joe'])
data = np.random.randn(7, 4) #生成正态分布的随机数据
print(data)
print(names == 'Bob')
'''假设每个名字对应data数组中的一行,想要选出对应于名字‘Bob’的所有行,跟算术运算一样,数组的比较运算
也是矢量化的,'''
print(data[names == "Bob"])
4、数组转置和轴对换
a、转置(transpose)是重塑的一种特殊形式,它返回的是源数据的视图,数组不仅有transpose方法,还有一个特殊的T属性
import numpy as np
arr = np.arange(15).reshape(3, 5)
print(arr)
print(arr.T) #转置
print(np.transpose(arr))#转置
5、通用函数
通用函数是一种对ndarray中数据执行元素级运算的函数,在做简单的矢量化包装器
import numpy as np
arr = np.arange(10)
print(np.sqrt(arr)) #求每个元素的开方
print(np.exp(arr)) #求自然常数的方 x = np.random.randn(10)
y = np.random.randn(10) print(x)
print(y)
print(np.maximum(x, y)) #接受两个数组,返回一个结果数组
6、利用数组进行数据处理
Numpy数组使得可以将许多数据处理任务表述为简洁的数组表达式,用数组表达式代替循环的做法称为矢量化。
import numpy as np
import matplotlib.pyplot as plt
points = np.arange(-5, 5, 0.01) #1000个间隔相等的点
xs, ys = np.meshgrid(points, points)
print(ys)
z = np.sqrt(xs**2+ys**2)
plt.imshow(z, cmap=plt.cm.gray)
plt.colorbar()
plt.title("Image plot of $\sqrt{x^2+y^2}$for a grid of values")
plt.show()

7、数学和统计方法---通过数组上的一组数学函数对整个数组或者某个轴向的数据进行统计计算
import numpy as np
arr = np.array([[1,2,3],[4,5,6],[7,8,9]])
print(arr.mean())
print(arr.sum())
print(arr.mean(axis=1))
print(arr.cumsum()) #累计和
print(arr.cumprod()) #累计积
print(arr.std()) #标准差
print(arr.var()) #方差
8、 随机漫步
import random
import matplotlib.pyplot as plt
position = 0
walk = [position]
steps = 100
for i in range(steps):
step = 1 if random.randint(0, 1) else -1
position += step
walk.append(position)
plt.plot(range(101), walk)
plt.show()

import numpy as np
import matplotlib.pyplot as plt
#数组实现
position = 0
nsteps = 100
draws = np.random.randint(0, 2, size=nsteps)
steps = np.where(draws > 0, 1, -1)
walk = steps.cumsum()
print(walk)
plt.plot(range(100), walk)
plt.show()

9、一次模拟多个随机漫步
import numpy as np
import matplotlib.pyplot as plt
nwalks = 5000
nsteps = 1000
draws = np.random.randint(0, 2, size=(nwalks, nsteps))
steps = np.where(draws > 0, 1, -1)
walks = steps.cumsum(1)
print(walks.max())
print(walks.min())
print(walks)
hits30 = (np.abs(walks) >= 30).any(1)
print(hits30)
print(hits30.sum())
(一)NumPy基础:数组和矢量计算的更多相关文章
- python numpy基础 数组和矢量计算
在python 中有时候我们用数组操作数据可以极大的提升数据的处理效率, 类似于R的向量化操作,是的数据的操作趋于简单化,在python 中是使用numpy模块可以进行数组和矢量计算. 下面来看下简单 ...
- python数据分析 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基础:数组和矢量计算
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之NumPy实践之数组和矢量计算
Python之NumPy实践之数组和矢量计算 1. NumPy(Numerical Python)是高性能科学技术和数据分析的基础包. 2. NumPy的ndarray:一种对位数组对象.NumPy最 ...
- python数据分析---第04章 NumPy基础:数组和矢量计算
NumPy(Numerical Python的简称)是Python数值计算最重要的基础包.大多数提供科学计算的包都是用NumPy的数组作为构建基础. NumPy的部分功能如下: ndarray,一个具 ...
- numpy——基础数组与计算
In [1]: import numpy as np In [11]: # 创建数组 a = np.array([1,2,3,4,5]) In [12]: a Out[12]: array([1, 2 ...
随机推荐
- HTML+JavaScript画函数图像
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- Mybatis【1】-- 第一个Mybatis程序
1.框架是什么 框架(Framework)是整个或部分系统的可重用设计,表现为一组抽象构件及构件实例间交互的方法;另一种定义认为,框架是可被应用开发者定制的应用骨架.前者是从应用方面而后者是从目的方面 ...
- Docker 指南
一.docker 介绍 1.1 引言 环境不一致 "我本地运行没问题啊?!" 多用户相互影响 "哪个哥们又写死循环了,怎么这么卡?!" 运维成本高 " ...
- 小米ICPC第一场自闭记
这次终于找到了靠谱队友,比之前我做不出来==队友做不出来好太多了 昨天3人热身赛疯狂杀了8道题,感觉今天稳了 一开始就瞅了A题,发现似乎可以dp,看了看数据,1e7,大概想出了nsqrtn算法,想着肯 ...
- 转:Http协议中Cookie详细介绍
Http协议中Cookie详细介绍 Cookie总是保存在客户端中,按在客户端中的存储位置,可分为内存Cookie和硬盘Cookie.内存Cookie由浏览器维护,保存在内存中,浏览器关闭后就消失了, ...
- php 序列化键、值逃逸
转自https://www.cnblogs.com/wangtanzhi/p/12261610.html PHP反序列化的对象逃逸(很重要一点,引号的匹配是从左到右按字符串长度进行匹配) 任何具有一定 ...
- XSS挑战赛(2)
进入第六关 简单判断过滤情况 <>script"'/ 查看源代码 可以看到第二个红框部分跟之前类似,闭合双引号尝试进行弹窗 "><script>ale ...
- centos 6.4-linux环境配置,安装hadoop-1.1.2(hadoop伪分布环境配置)
1 Hadoop环境搭建 hadoop 的6个核心配置文件的作用: core-site.xml:核心配置文件,主要定义了我们文件访问的格式hdfs://. hadoop-env.sh:主要配置我们的j ...
- 冲刺Day7
每天举行站立式会议照片: 昨天已完成的工作: 1.确认商品分类栏,并前后端交互 2.检查.更正订单模块的代码 3.检查.更正用户模块的代码 今天计划完成的工作: 成员 任务 高嘉淳 检查代码.提供测试 ...
- 百度前端技术学院-基础-day22-24
第二十二天到第二十四天:JavaScript里面的居民们 task1 题目: <div> <label>Number A:<input id="radio-a& ...