numpy 基础知识

本文介绍了numpy的基础知识,包括如何创建数组、获取数组属性如shape、size和dtype,以及如何存取和修改数据。此外,还讨论了数组的基本运算,如加减乘除,以及使用布尔数组进行索引。numpy的乘法运算符*表示按元素计算,而dot函数用于矩阵乘法。最后提到了数组函数和方法的重要性。
摘要由CSDN通过智能技术生成

标准安装的Python中用列表(list)保存一组值,可以用来当作数组使用,不过由于列表的元素可以是任何对象,因此列表中所保存的是对象的指针。这样为了保存一个简单的[1,2,3],需要有3个指针和三个整数对象。对于数值运算来说这种结构显然比较浪费内存和CPU计算时间。
此外Python还提供了一个array模块,array对象和列表不同,它直接保存数值,和C语言的一维数组比较类似。但是由于它不支持多维,也没有各种运算函数,因此也不适合做数值运算。
NumPy的诞生弥补了这些不足,NumPy提供了两种基本的对象:ndarray(N-dimensional array object)和 ufunc(universal function object)。ndarray是存储单一数据类型的多维数组,而ufunc则是能够对数组进行处理的函数。

创建数组
  • 可以通过给array函数传递Python的序列对象创建数组。
  • NumPy提供了很多专门用来创建数组的函数,如arange函数、linspace函数、logspace函数,random函数、zeros、ones等

    import numpy as np
    a=np.array([1,2,3,4])
    b=np.array((1,2,3,4))
    #等差/比
    print np.arange(1,10,1)#[1 2 3 4 5 6 7 8 9]
    print np.linspace(1,10,5)#[  1.     3.25   5.5    7.75  10.  ]
    print np.logspace(1,2,5)#[10. 17.7827941 31.6227766  56.23413252 100. ]
    #随机数
    print np.random.rand(1,5)#第一个参数代表一行[[ 0.54190009  0.88740335  0.26858951  0.52750372  0.83566541]]
    print np.random.rand(2,5)#两行
    print np.random.randint(2,size=5)#5个随机整数[0,2)
    print np.random.randint(2,5,size=5)#5个随机整数[2,5)
    #全0或全1
    print np.zeros(3)#[ 0.  0.  0.  0.  0.]
    print np.zeros((3,3))#三行三列为0        
    
获取属性
  • ndarray.shape
    数组的维度。这是一个指示数组在每个维度上大小的整数元组。
  • ndarray.size
    数组元素的总个数,等价于shape属性中元组元素的乘积。
  • ndarray.dtype
    用来描述数组中元素类型的对象.
  • ndarray.reshape
    使用数组的reshape方法,可以创建一个改变了尺寸的新数组,原数组的shape保持不变

    a=np.array([[1,2,3,4],[2,3,4,5]])
    print a.shape,a.size,a.dtype
    //(2, 4) 8 int32
    d=a.reshape((4,-1))
    //[[1 2],[3 4],[2 3],[4 5]]
    

    注意:

    • total size of new array must be unchanged
    • 数组a和d其实共享数据存储内存区域,因此修改其中任意一个数组的元素都会同时修改另外一个数组的内容
存取数据
  • 数组元素的存取方法和Python的标准方法相同;
  • 和Python的列表序列不同,通过下标范围获取的新的数组是原始数组的一个视图。它与原始数组共享同一块数据空间
  • 使用布尔数组,使用布尔数组作为下标获得的数组不和原始数组共享数据空间

    a=np.random.rand(5)#[ 0.05056014  0.74492156  0.30582769  0.75466489  0.9813687 ]
    a[a>0.5]#[ 0.74492156  0.75466489  0.9813687 ]
    
基本运算
  • 数组的算术运算是按元素的。

    a= np.arange(5)
    b=np.zeros(5)
    print a-b#[ 0. 1. 2. 3. 4.]
    print a*b#[ 0. 0. 0. 0. 0.]

  • NumPy中的乘法运算符 * 指示按元素计算,矩阵乘法可以使用 dot 函数或创建矩阵对象实现。dot 函数在处理一维时是点乘,二维时是矩阵相乘。

    a=np.array([1,2,3])
    b=np.array([3,2,1])
    print np.dot(a,b)#10
    aa=np.array([[1,1]])
    bb=np.arange(1,5).reshape(2,-1)
    print np.dot(aa,bb)#[[4 6]]

函数和方法

这里写图片描述

参考文献

Numpy教程1
Numpy教程2
Numpy文档

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值