Numpy简介

作者: zjlearn | 来源:发表于2017-01-05 17:40 被阅读140次

numpy

[TOC]

简介

标准安装的Python中用列表(list)保存一组值,可以用来当作数组使用,不过由于列表的元素可以是任何对象,因此列表中所保存的是对象的指针。这样为了保存一个简单的[1,2,3],需要有3个指针和三个整数对象。对于数值运算来说这种结构显然比较浪费内存和CPU计算时间。

NumPy的诞生弥补了这些不足,NumPy提供了两种基本的对象:ndarray(N-dimensional array object)和 ufunc(universal function object)。ndarray(下文统一称之为数组)是存储单一数据类型的多维数组,而ufunc则是能够对数组进行处理的函数

包导入

import numpy as np

ndarray对象

ndarray对象是一个同质的多维数组,其中存储相同数据类型,以整数进行索引的内容。
以下是该对象具有的属性:

  • ndarray.ndim: 对象的维度数
  • ndarray.shape: 每个维度的深度
  • ndarray.size : 数组中总的元素数
  • ndarray.dtype : 数组中元素的类型
  • ndarray.itemsize: 数组元素的字节大小,比如说某一个元素是几个字节的。

常用的函数

创建

  1. 我们可以通过给array函数传递Python的序列对象创建数组,如果传递的是多层嵌套的序列,将创建多维数组(下例中的变量c)
    python中的序列对象包括了:列表, 元素
 np.array([1.2, 3.5, 5.1])
 np.array(1,2,3,4)    # WRONG
np.array([(1.5,2,3), (4,5,6)]
np.array( [ [1,2], [3,4] ], dtype=complex )

其中第二项是经常犯的错误,直接使用多个数值调用array。数据类型是从序列对象中的元素推倒而来。

  1. 创建大小已知,元素值初始化的ndarray.
np.zeros( (3,4) )  # 维度为(3,4)的数组,初始化为0
np.ones( (2,3,4), dtype=np.int16 ) # dtype can also be specified
np.empty( (2,3) ) #未初始化的, 输出变化可能非常的大
np.arange( 10, 30, 5 ) #创建序列化的元素,参数:开始(默认0),结束,步长(默认1)
np.arange( 0, 2, 0.3 ) #array([ 0. ,  0.3,  0.6,  0.9,  1.2,  1.5,  1.8])
np.linspace( 0, 2, 9 )  #创建固定个数的元素 9 numbers from 0 to 2       

创建之后的序列,我们可以使用reshape对数组的维度进行修改

x=np.linspace( 0, 2, 9 )
x.reshape(3,3)  #改变数组的维度

下面是剩下的一些函数:

numpy.random.rand(d0, d1, ..., dn) #在指定的维度,随机的生成元素值,返回[0,1)的均匀分布
numpy.random.randn(d0, d1, ..., dn)#返回指定维度数量标准正态分布样本
sigma * np.random.randn(...) + mu  #生成其他的正态分布
umpy.fromfunction(function, shape, **kwargs)[source]¶
numpy.fromfile #从文件中生成,需要与其他的函数一起使用

参考:https://docs.scipy.org/doc/numpy-dev/user/quickstart.html

打印

打印的规则如下:

>>> c = np.arange(24).reshape(2,3,4)         # 3d array
>>> print(c)
[[[ 0  1  2  3]
  [ 4  5  6  7]
  [ 8  9 10 11]]
 [[12 13 14 15]
  [16 17 18 19]
  [20 21 22 23]]]

基本操作

  1. 应用到数组中的基本操作是elementwise的。结果返回的是一个新的数组。
>>> 10*np.sin(a)
array([ 9.12945251, -9.88031624,  7.4511316 , -2.62374854])
  1. *操作符是elementwise的, numpy中的矩阵乘法是用dot
  2. +=, *= 运算符原地修改现有的多维数组
a=np.ones((3,3),dtype=int)
a*=3
>>> a
array([[3, 3, 3],
       [3, 3, 3]])
  1. 许多基本操作都是直接应用到ndarray类上面的,例如:
>>> a = np.random.random((2,3))
>>> a
array([[ 0.18626021,  0.34556073,  0.39676747],
       [ 0.53881673,  0.41919451,  0.6852195 ]])
>>> a.sum()
2.5718191614547998
>>> a.min()
0.1862602113776709
>>> a.max()
0.6852195003967595

默认的情况下,这些操作是价格ndarray当作list,而不管维度信息,不过你可以指定axis参数进行更细粒度的计算。

>>> b = np.arange(12).reshape(3,4)
>>> b
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11]])
>>>
>>> b.sum(axis=0)                            # sum of each column
array([12, 15, 18, 21])
>>>
>>> b.min(axis=1)                            # min of each row
array([0, 4, 8])

array的维度信息:

  1. 全局的函数
    numpy提共了一些全局的函数
  2. 索引,切片
  3. 维度操作
  4. 堆叠不同的数组
    不同的数组可以沿着不同的维度堆叠起来。
>>> a = np.floor(10*np.random.random((2,2)))
>>> a
array([[ 8.,  8.],
       [ 0.,  0.]])
>>> b = np.floor(10*np.random.random((2,2)))
>>> b
array([[ 1.,  8.],
       [ 0.,  4.]])
>>> np.vstack((a,b))
array([[ 8.,  8.],
       [ 0.,  0.],
       [ 1.,  8.],
       [ 0.,  4.]])
>>> np.hstack((a,b))
array([[ 8.,  8.,  1.,  8.],
       [ 0.,  0.,  0.,  4.]])

参考:https://docs.scipy.org/doc/numpy-dev/user/quickstart.html

  1. 复制和视图

相关文章

  • NumPy入门

    qq:875880047 NumPy简介 • 官网链接:http://www.numpy.org/ • NumPy...

  • python科学计算常用包

    一、numpy 中文文档:https://www.numpy.org.cn/ 简介:  NumPy(Numeric...

  • Numpy简介

    numpy [TOC] 简介 标准安装的Python中用列表(list)保存一组值,可以用来当作数组使用,不过由于...

  • Numpy 简介

    什么是NumPy? NumPy是Python中科学计算的基础软件包。它是一个提供多了维数组对象,多种派生对象(如:...

  • 阅读材料PYTHON

    Python简介 Numpy工具集合 简介 numpy工具集是在Python环境下用于科学计算的工具集合 利用ar...

  • Numpy矩阵基础

    Numpy简介 NumPy 简介Python 很方便,但也会很慢。不过,它允许你访问执行用 C 等语言编写的代码的...

  • NumPy之:NumPy简介教程

    [toc] 简介 NumPy是一个开源的Python库,主要用在数据分析和科学计算,基本上可以把NumPy看做是P...

  • 一个NumPy模块就要学这么多?师傅发两个月就整理了一个模块资料

    一、NumPy简介 其官网是:http://www.numpy.org/ NumPy是Python语言的一个扩充程...

  • 功能强大的python包(一):Numpy

    功能强大的python包(一):Numpy 1.Numpy简介 Numpy是python的一种开源的数值计算扩展;...

  • NumPy--简介

    Numpy NumPy是Python语言的一个扩充程序库。支持高级大量的维度数组与矩阵 运算,此外也针对数组运算提...

网友评论

    本文标题:Numpy简介

    本文链接:https://www.haomeiwen.com/subject/navzvttx.html