numpy 基础

创建ndarray数组:

import numpy as np
np.array([2,3]) #创建一个2行3列的一维ndarray数组

常用属性

  • T 数组的转置(对高维数组而言)
  • dtype 数组元素的数据类型
  • size 数组元素的个数
  • ndim 数组的维数
  • shape 数组的维度大小(以元组形式)

数据类型dtype:
bool_ , int(8, 16,32,64), uint(8, 16,32,64), float(16,32,64)
类型转换: astype()

创建ndarray:

  • array() 将列表转换为数组,可选择显式指定dtype
  • arange() range的numpy版,支持浮点数
  • linspace() 类似arange(),第三个参数为数组长度
  • beros() 根据指定形状和dtype创建全0数组
  • ones() 根据指定形状和dtype创建全1数组
  • empty() 根据指定形状和dtype创建空数组(随机值)
  • eye() 根据指定边长和dtype创建单位矩阵

numpy索引和切片

数组和标量之间的运算

a+1 a*3  1//a    a ** 0.5

2.同样大小数组之间的运算

a+b     a/b     a**b

数组的索引

a[5]        a2[2][3]        a2[2,3]

数组的切片

a[5:8]      a[:3] = 1       a2[1:2, :4]     a2[:,:1]        a2[:,1]

与列表不同,数组切片时并不会自动复制,在切片数组上的修改 会影响原数组。
[解决方法: copy()]

原:b=a[:4]   解决:b= a[:4].copy()
b[-1] = 250

numpy布尔型索引

问题1: 给一个数组,选出数组中所有大于5的数。
答案: a[a>5]
原理:

  1. a> 5会对a中的每一一个元素进行判断,返回一个布尔数组
  2. 布尔型索引:将同样大小的布尔数组传进索引,会返回一个由所有True对应位置的元素的数组

问题2: 给一个数组,选出数组中所有大于5的偶数。
问题3: 给一个数组,选出数组中所有大于5的数和偶数。
答案:

a[(a>5) & (a%2==0)]
a[(a>5) | (a%2==0)]

numpy花式索引*
问题1: 对于-一个数组,选出其第1,3,4,6,7个元素,组成新的二维数组。
答案: a[[1,3,4,6,7]]
问题2: 对一个二维数组,选出其第一列和第三列,组成新的二维数组。
答案: a[:,[1,3]]

numpy通用函数

【定义】通用函数:能同时对数组中所有元素进行运算的函数
常见通用函数:
一元函数(传1个数组): abs, sqrt, exp, log, ceil(向上取整), floor(向下取整), rint/round(四舍五入), trunc(向零取整),modf, isnan, isinf, cos, sin, tan
二元函数(传2个数组): add(加), substract(减), multiply(乘), divide(除), power(乘方), mod(取余),maximum, mininum,

#一元:向上取整ceil,向下取整floor
import numpy as np
np.ceil(3.1) #结果:4.0
np.floor(3.9) #结果:3.0
#对应python内置math
import math
math.ceil(3.1) #结果4
math.floor(3.9) #结果3

numpy通用函数数组的用法

>>> import numpy as np
#==================【一元:向上取整ceil,向下取整floor】==============
#-----------------------【ceil函数】-------------------------------
>>> a=np.arange(0,5,0.2)
>>> a
array([0. , 0.2, 0.4, 0.6, 0.8, 1. , 1.2, 1.4, 1.6, 1.8, 2. , 2.2, 2.4,
       2.6, 2.8, 3. , 3.2, 3.4, 3.6, 3.8, 4. , 4.2, 4.4, 4.6, 4.8])
>>> np.ceil(a)
array([0., 1., 1., 1., 1., 1., 2., 2., 2., 2., 2., 3., 3., 3., 3., 3., 4.,
       4., 4., 4., 4., 5., 5., 5., 5.])
#----------------------【modf函数】----------------------------------
>>> a,b=np.modf(a)
>>> a
array([0. , 0.2, 0.4, 0.6, 0.8, 0. , 0.2, 0.4, 0.6, 0.8, 0. , 0.2, 0.4,
       0.6, 0.8, 0. , 0.2, 0.4, 0.6, 0.8, 0. , 0.2, 0.4, 0.6, 0.8])
>>> b
array([0., 0., 0., 0., 0., 1., 1., 1., 1., 1., 2., 2., 2., 2., 2., 3., 3.,
       3., 3., 3., 4., 4., 4., 4., 4.])
#--------------------【isnan和isinf】--------------------------
#首先看如下运算【isinf】:
>>> a=np.array([0,1,2,3,4,5])
>>> b=np.array([5,4,3,2,1,0])
>>> c=a/b
>>> c
#因为被除数有个0,所以会有个警告
__main__:1: RuntimeWarning: divide by zero encountered in true_divide
#inf表示无限大(infinity)即5/0=inf,考虑微积分情形
array([0.        , 0.25      , 0.66666667, 1.5       , 4.        ,      inf]) 

#再看如下运算【isnan】:
>>> d=np.array([0,1,2])
>>> e=np.array([0,1,2])
>>> f=d/e
>>> f
#0/0不是数,所以出现警告,nan
__main__:1: RuntimeWarning: invalid value encountered in true_divide
array([nan,  1.,  1.])

#【isnan和isinf使用:判断是否含有非数(0/0),和无限大数(5/0)】
>>> f
array([nan,  1.,  1.])
>>> c
array([0.        , 0.25      , 0.66666667, 1.5       , 4.        ,       inf])
>>> np.isnan(f)
array([ True, False, False])
>>> np.isinf(c)
array([False, False, False, False, False,  True])

#【返回非数、无限大数】~表示非
>>> ~np.isinf(c)
array([ True,  True,  True,  True,  True, False])
>>> ~np.isnan(f)
array([False,  True,  True])

#-----------【maxinum/mininum】---------
>>> a=np.arange(0,9,1)
>>> b=np.arange(10,19,1)
>>> a
array([0, 1, 2, 3, 4, 5, 6, 7, 8])
>>> b
array([10, 11, 12, 13, 14, 15, 16, 17, 18])
>>> np.maximum(a,b)#两个数组对比取大的
array([10, 11, 12, 13, 14, 15, 16, 17, 18])

numpy常用函数

一、numpy数学和统计学方法:

  1. sum:求和
  2. cumsum:求累计和
  3. mean:求平均数
  4. std:求标准差
  5. var:求方差
  6. min:求最小值
  7. max:求最大值
  8. argmin:求最小值索引
  9. argmax :求最大值索引

二、随机数生成

  1. rand:给定形状产生随机数组(0到1之间的数)
  2. randint:给定形状产生随机整数
  3. choice:给定形状产生随机选择
  4. shuffle:与random. shuffle相同 (打乱列表原有顺序)
  5. uniform:给定形状产生随机数组

随机数示例:

#==========python内置random==========
>>> import random
>>> a=np.arange(0,5,1)
>>> a
array([0, 1, 2, 3, 4])
>>> random.shuffle(a)
>>> a
array([3, 0, 1, 4, 2])

#==========【numpy random】==========
#【np.random.rand()】
>>> np.random.rand() #0-1间随机数
0.8012219581827386
>>> np.random.rand(10) #生成10个0-1间随机数
array([0.80526841, 0.77220095, 0.40605223, 0.75310937, 0.69884484,
       0.5413281 , 0.53127462, 0.7825014 , 0.61354559, 0.66085711])
#【np.random.randint】
>>> np.random.randint(1,10) #生成1个  1-10间随机整数组
2
>>> np.random.randint(1,10,5) #生成5个 1-10间随机整数组
array([2, 3, 5, 2, 5])
>>> np.random.randint(1,10,(2,3)) #生成2行3列 1-10间随机 多维 整数组
array([[2, 3, 7],
       [1, 9, 3]])

原文地址:https://www.cnblogs.com/chenxi188/p/11775795.html

时间: 2024-10-16 05:29:19

numpy 基础的相关文章

利用 Python 进行数据分析(五)NumPy 基础:ndarray 索引和切片

概念理解 索引即通过一个无符号整数值获取数组里的值. 切片即对数组里某个片段的描述. 一维数组 一维数组的索引 一维数组的索引和Python列表的功能类似: 一维数组的切片 一维数组的切片语法格式为array[index1:index2],意思是从index1索引位置开始,到index2索引(不包括index2)位置结束的一段数组.例如: 当把一个值赋值为一个切片时,该值会作用于此数组片段里每一个元素,例如: 二维数组 二维数组的索引 当以一维数组的索引方式访问一个二维数组的时候,获取的元素不在

利用 Python 进行数据分析(四)NumPy 基础:ndarray 简单介绍

一.NumPy 是什么 NumPy 是 Python 科学计算的基础包,它专为进行严格的数字处理而产生.在之前的随笔里已有更加详细的介绍,这里不再赘述. 利用 Python 进行数据分析(一)简单介绍 二.ndarray 是什么 ndarray 是一个多维的数组对象,具有矢量算术运算能力和复杂的广播能力,并具有执行速度快和节省空间的特点. ndarray 的一个特点是同构:即其中所有元素的类型必须相同. 三.ndarray 的创建 array() 函数 最简单的方法, 使用 NumPy 提供的

【NumPy基础】100道numpy练习——Apprentice篇

[NumPy基础]100道numpy练习--Apprentice篇 @author:wepon @blog:http://blog.csdn.net/u012162613/article/details/42811297 今天又用半小时扫了一下Apprentice篇里的10道exercise,不知道怎么翻译Apprentice(学徒--)这个词,就直接以Apprentice篇作为题目了.numpy语法直白如水啊,花这些时间exercise有点浪费了.......Anyway,为了后面更熟练地用一

【NumPy基础】100道numpy练习——进阶篇

[NumPy基础]100道numpy练习--进阶篇 @author:wepon @blog:http://blog.csdn.net/u012162613/article/details/42846777 选自numpy-100,当作熟悉NumPy的练习.NumPy只是一个数值计算的工具包,在实际的算法实现中来熟悉NumPy才是有效的,因此后面不打算继续写了,到此文为止,基本的语法已经够用了,之后在实践中总结可能效果更好.而且遇到问题参考NumPy官网文档即可. 之前两篇: [NumPy基础]1

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

第四章 Numpy基础:数组和矢量计算 实话说,用numpy的主要目的在于应用矢量化运算.Numpy并没有多么高级的数据分析功能,理解Numpy和面向数组的计算能有助于理解后面的pandas.按照课本的说法,作者关心的功能主要集中于: 用于数据整理和清理.子集构造和过滤.转换等快速的矢量化运算 常用的数组解法,如排序.唯一化.集合运算等 高效的描述统计和数据聚合/摘要运算 用于异构数据集的合并/连接运算的数据对齐和关系型数据运算 将条件逻辑表述为数组表达式(而不是带有if-elif-else分支

[转]python与numpy基础

来源于:https://github.com/HanXiaoyang/python-and-numpy-tutorial/blob/master/python-numpy-tutorial.ipynb python与numpy基础 寒小阳(2016年6月) Python介绍 如果你问我没有编程基础,想学习一门语言,我一定会首推给你Python类似伪代码的书写方式,让你能够集中精力去解决问题,而不是花费大量的时间在开发和debug上同时得益于Numpy/Scipy这样的科学计算库,使得其有非常高效

科学计算库Numpy基础操作

pycharm,python3.7,numpy版本1.15.1 2018年9月11日04:23:06 """ 科学计算库Numpy基础操作 时间:2018\9\11 0011 """ import numpy print("""\n------以矩阵的方式读取数据------\n ------------genfromtxt函数('文件路径',delimiter = '分隔符',dtype = 读取方式)------

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

<利用Python进行数据分析·第2版>第四章 Numpy基础:数组和矢量计算 numpy高效处理大数组的数据原因: numpy是在一个连续的内存块中存储数据,独立于其他python内置对象.其C语言编写的算法库可以操作内存而不必进行其他工作.比起内置序列,使用的内存更少(即时间更快,空间更少) numpy可以在整个数组上执行复杂的计算,而不需要借助python的for循环 4.0 前提知识 数据:结构化的数据代指所有的通用数据,如表格型,多维数组,关键列,时间序列等 相关包:numpy pa

数据分析(Numpy基础)

数据分析(Numpy基础) 1.什么是数据分析? 数据分析是指,用适当的统计分析方法,对收集来的大量数据进行分析,提取有用信息并形成结论,从而实现对数据的详细研究和概括总结的过程. 2.python做数据分析的常用库 1. numpy 基础数值算法 2. scipy 科学计算 3. matplotlib 数据可视化 4. pandas 序列高级函数 一.numpy概述 1.什么是numpy? 1. Numerical Python,数字的Python,弥补了Python语言所欠缺的数值计算能力.

Python Numpy基础简介

Numpy基础: NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库. NumPy 的前身 Numeric 最早是由 Jim Hugunin 与其它协作者共同开发,2005 年,Travis Oliphant 在 Numeric 中结合了另一个同性质的程序库 Numarray 的特色,并加入了其它扩展而开发了 NumPy.NumPy 为开放源代码并且由许多协作者共同维护开发. 首先创建一个最