一、创建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. Python命令行参数定义及注意事项

    在命令行中运行python代码是很常见的,下面介绍如何定义命令后面跟的参数. 常规用法 Python代码中主要使用下面几行代码来定义并获取需要在命令行中赋值的参数: import argparse p ...

  2. 11_SurfaceView绘图

    学习SurfaceView绘图API的使用方法,为接下来使用SurfaceView开发游戏做准备. 1 package com.example.surfaceview; 2 3 import andr ...

  3. Scrum 冲刺 第七篇

    Scrum 冲刺 第七篇 每日会议照片 昨天已完成工作 队员 昨日完成任务 黄梓浩 初步完成app首页模块的搭建 黄清山 完成部分个人界面模块数据库的接口 邓富荣 完成部分个人界面接口 钟俊豪 完成部 ...

  4. Symbol类型是不可枚举的

    const info = { [Symbol('a')]: 'b' } console.log(info)//{Symbol('a'): 'b'} console.log(Object.keys(in ...

  5. Spring RestTemplate具备负载均衡功能

     在创建RestTemplate的Bean时使用@LoadBalanced注解, 就可以自动配置为使用ribbon.如下面的示例所示: @Configuration public class MyCo ...

  6. SNOI2020 部分题解

    D1T1 画图可以发现,多了一条边过后的图是串并联图.(暂时不确定) 然后我们考虑把问题变成,若生成树包含一条边\(e\),则使生成树权值乘上\(a_e\),否则乘上\(b_e\),求最终的生成树权值 ...

  7. Aizu2970 Permutation Sort

    题目大意 给你两个 \(n\) 个整数的排列,第一个排列表示原排列,第二个排列表示第 \(i\) 个数可以和i变成第 \(g_i\) 个数,问,最少对所有数进行几次操作可以使原排列变为有序的排列. 题 ...

  8. 题解-SHOI2005 树的双中心

    SHOI2005 树的双中心 给树 \(T=(V,E)(|V|=n)\),树高为 \(h\),\(w_u(u\in V)\).求 \(x\in V,y\in V:\left(\sum_{u\in V} ...

  9. 微信小程序-卡券开发(前端)

    刚完成一个微信小程序卡券开发的项目.下面记录开发前,自己困惑的几个问题. 因为我只负责了前端.所以下面主要是前端的工作. 项目概述:按照设计图开发好首页上的优惠券列表,点击某个优惠券,输入手机号,点击 ...

  10. tornado 网页提交内容 展示内容作业

    s2.py import tornado.ioloop import tornado.web text_list=[] class MainHandler(tornado.web.RequestHan ...