一、创建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基础:数组和矢量计算的更多相关文章

  1. python numpy基础 数组和矢量计算

    在python 中有时候我们用数组操作数据可以极大的提升数据的处理效率, 类似于R的向量化操作,是的数据的操作趋于简单化,在python 中是使用numpy模块可以进行数组和矢量计算. 下面来看下简单 ...

  2. python数据分析 Numpy基础 数组和矢量计算

    NumPy(Numerical Python的简称)是Python数值计算最重要的基础包.大多数提供科学计算的包都是用NumPy的数组作为构建基础. NumPy的部分功能如下: ndarray,一个具 ...

  3. 利用Python进行数据分析 第4章 NumPy基础-数组与向量化计算(3)

    4.2 通用函数:快速的元素级数组函数 通用函数(即ufunc)是一种对ndarray中的数据执行元素级运算的函数. 1)一元(unary)ufunc,如,sqrt和exp函数 2)二元(unary) ...

  4. 《利用python进行数据分析》读书笔记--第四章 numpy基础:数组和矢量计算

    http://www.cnblogs.com/batteryhp/p/5000104.html 第四章 Numpy基础:数组和矢量计算 第一部分:numpy的ndarray:一种多维数组对象 实话说, ...

  5. 利用Python进行数据分析——Numpy基础:数组和矢量计算

    利用Python进行数据分析--Numpy基础:数组和矢量计算 ndarry,一个具有矢量运算和复杂广播能力快速节省空间的多维数组 对整组数据进行快速运算的标准数学函数,无需for-loop 用于读写 ...

  6. 《利用Python进行数据分析·第2版》第四章 Numpy基础:数组和矢量计算

    <利用Python进行数据分析·第2版>第四章 Numpy基础:数组和矢量计算 numpy高效处理大数组的数据原因: numpy是在一个连续的内存块中存储数据,独立于其他python内置对 ...

  7. 【学习笔记】 第04章 NumPy基础:数组和矢量计算

    前言 正式开始学习Numpy,参考用书是<用Python进行数据清洗>,计划本周五之前把本书读完,关键代码全部实现一遍 NumPy基础:数组和矢量计算 按照书中所示,要搞明白具体的性能差距 ...

  8. Python之NumPy实践之数组和矢量计算

    Python之NumPy实践之数组和矢量计算 1. NumPy(Numerical Python)是高性能科学技术和数据分析的基础包. 2. NumPy的ndarray:一种对位数组对象.NumPy最 ...

  9. python数据分析---第04章 NumPy基础:数组和矢量计算

    NumPy(Numerical Python的简称)是Python数值计算最重要的基础包.大多数提供科学计算的包都是用NumPy的数组作为构建基础. NumPy的部分功能如下: ndarray,一个具 ...

  10. 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 ...

随机推荐

  1. MySql学习笔记--详细整理--上

    目录 MySql MySql安装 连接数据库 操作数据库 数据库的列类型 数据库的字段属性 创建数据库 修改删除表 数据管理 外键 DML语言 添加 修改 删除 DQL查询数据(重点) 查询 去重 w ...

  2. C语言讲义——函数

    为实现特定目的而编写的一段可被调用的代码 简单地讲:函数就是一组语句,取了个名字 别名:子例程(routine)/方法(Method,一般面向对象的语言使用这个叫法) 函数的组成部分 以主函数为例: ...

  3. mysql幻读问题

    转载:https://blog.csdn.net/u013067756/article/details/90722490 关于间隙锁:https://blog.csdn.net/sinat_27143 ...

  4. 一道百度java面试题的多种解法

    下面是我在2018年10月11日二面百度的时候的一个问题: java程序,主进程需要等待多个子进程结束之后再执行后续的代码,有哪些方案可以实现? 这个需求其实我们在工作中经常会用到,比如用户下单一个产 ...

  5. 什么,kafka能够从follower副本读数据了 —kafka新功能介绍

    最近看了kafka2.4新版本的一些功能特性,不得不说,在kafka2.0以后,kafka自身就比较少推出一些新的feature了,基本都是一些修修补补的东西.倒是kafka connect和kafk ...

  6. [题解] [USACO05JAN]Muddy Fields G

    题目TP门 题目大意 在一个 \(R×C\) 的矩阵中,每个点有两个状态:草地和泥地.你需要在泥地里铺 \(1×k\) 木块, \(k\) 为任意整数,求最少要多少木块. 思路 两个横向木块不会互相干 ...

  7. python语法元素的名称

    变量 什么是变量? """ 变量是保存和表示数据值的一种语法元素,在程序中十分常见.顾名思义,变量的值是可以改变的,能够通过赋值(使用等号"=")方式 ...

  8. JZOJ 2020.10.7 提高B组反思

    JZOJ 2020.10.7 提高B组反思 T1 比较简单的一道题 跑\(k\)遍\(SPFA\) 然后全排列顺序枚举求解 TLE 60 双向存边数组没开两倍-- T2 搞出分母 分子不会求 \(n^ ...

  9. 部署完的Django项目升级为HTTPS

    1.阿里云上申请免费ssl证书--->提交各种资料--->等待审核--->下载证书. 2.远程连接阿里云服务器,将下载下来的证书内容复制到Nginx安装目录下的cert目录(需要新建 ...

  10. 第二章、PyQt5应用构建详细过程介绍

    老猿Python博文目录 老猿Python博客地址 一.引言 在上节<第一章.PyQt的简介.安装与配置>介绍了PyQt5及其安装和配置过程,本节将编写一个简单的PyQt5应用,介绍基本的 ...