一、创建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. nginx介绍及常用功能

    什么是nginx nginx跟Apache一样,是一个web服务器(网站服务器),通过HTTP协议提供各种网络服务. Apache:重量级的,不支持高并发的服务器.在Apache上运行数以万计的并发访 ...

  2. Java基础教程——封装

    面向对象的三大特征 封装:encapsulation 继承:inheritance 多态:polymorphism 封装 类是一个最基本的封装 封装的好处: 数据安全:保证数据安全 方便调用:提供清晰 ...

  3. 装饰模式(Decorator Pattern)

    代理模式:动态地给一个对象添加一些额外的职责,它比生成子类方式更为灵活. 优点:在某些时候装饰模式比继承(inheritance)要更加灵活 装饰模式的组成 (1)抽象组件:定义一个抽象接口,来规范准 ...

  4. 超稳攻略!Rancher 2.3手动轮换证书,保护集群安全!

    本文转自Rancher Labs 前 言 Rancher 2.3正式发布已经一年,第一批使用Rancher 2.3的用户可能会遇到Rancher Server证书过期,但是没有自动轮换的情况.这会导致 ...

  5. 解决右键notepad++打开时提示, ShellExecute failed (2): Is this command correct?

    错误如下图: 解决方法: 右键notepad++.exe; 去掉管理员方式

  6. 第三十一章、containers容器类部件QDockWidget停靠窗功能介绍

    专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 一.概述 QDockWidget类提供了一个可以停靠在QMainWin ...

  7. PyQt学习随笔:重写组件的event方法捕获组件的事件

    在PyQt的组件对象中,都有从QWidget中继承的方法event,而QWidget.event是对QObject类定义的虚拟方法event的实现. event方法的语法: bool event(QE ...

  8. Mac下安装Mesa

    下载Mesa源代码: git clone https://gitlab.freedesktop.org/mesa/mesa.git 如果下载太慢,请参看 下载国外资源. 我下载后看到的Mesa版本信息 ...

  9. XSS挑战赛(4)

    16-20关 第十六关 关键代码为: <?php ini_set("display_errors", 0); $str = strtolower($_GET["ke ...

  10. tensorflow 指定版本安装

    首先,建议在anaconda中创建虚拟环境,教程已写,参考上一篇 下载之前建议设置pip清华源(用以提速,可百度) 设置下载源 pip config set global.index-url http ...