一、多维数组

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基础之数组和向量化计算总结的更多相关文章

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

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

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

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

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

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

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

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

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

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

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

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

  7. 《利用python进行数据分析》NumPy基础:数组和矢量计算 学习笔记

    一.有关NumPy (一)官方解释 NumPy is the fundamental package for scientific computing with Python. It contains ...

  8. 《利用Python进行数据分析》笔记---第4章NumPy基础:数组和矢量计算

    写在前面的话: 实例中的所有数据都是在GitHub上下载的,打包下载即可. 地址是:http://github.com/pydata/pydata-book 还有一定要说明的: 我使用的是Python ...

  9. 数据分析之Numpy基础:数组和适量计算

    Numpy(Numerical Python)是高性能科学计算和数据分析的基础包. 1.Numpy的ndarray:一种多维数组对象 对于每个数组而言,都有shape和dtype这两个属性来获取数组的 ...

随机推荐

  1. Python学习(四十一)—— Djago进阶

    一.分页 Django的分页器(paginator) view from django.shortcuts import render,HttpResponse # Create your views ...

  2. 如何用div绘制一个容器,例如圆形

    需求:一个圆形的容器,里面有两种颜色,随比率不同而变化. 实现同一个容器中两种颜色变化的关键是css渐变 //background:linear-gradient(#818181 30%,#06FF3 ...

  3. Python WMI获取Windows系统信息

    #!/usr/bin/env python # -*- coding: utf-8 -*- #http://www.cnblogs.com/liu-ke/ import wmi import os i ...

  4. python基础一 ------排序和查找算法

    插入排序; 假设数组长度为n,先从第二个元素开始,与前一个元素比较,之后将较小的元素    放在前面,现在前两个元素是有顺序的,这时取第三个元素,与前一个元素(也就是第二个)比较,较小的放在前面   ...

  5. InfluxDB——python使用手册

    InfluxDB--python使用手册 准备工作 安装InfluxDB: 请参考笔者相关博文:Centos7安装InfluxDB1.7 安装pip : yum install python-pip ...

  6. PYTOGO之旅——环境搭建

    Go 语言支持以下系统: Linux FreeBSD Mac OS X(也称为 Darwin) Windows 安装包下载地址为:https://golang.org/dl/. 如果打不开可以使用这个 ...

  7. 使用javascript和css模拟帧动画的几种方法浅析

    我们平时在开发前端页面的时候,经常会播放一段帧序列.这段帧序列就像gif图片那样,反复循环播放.那大家可能会说,直接用gif图片就好了,干嘛还去模拟呢?那是因为要做得更加灵活,我们要做到以下几点: 1 ...

  8. ECMA Script 6_异步编程之 Promise

    Promise 对象 异步编程 方案,已同步的方式表达异步的代码,解决回调地狱的问题 比传统的解决方案——回调函数和事件——更合理和更强大 是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步 ...

  9. js 原生_拖动页面元素,松开释放

    嗯哼.不多说,直接上代码了. // 为元素 绑定拖动事件 function bindDragEvent(obj){ obj.onmousedown = function(e){ e = e || wi ...

  10. vue_表单 input 的绑定

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...