探索NumPy库

1.Numpy的引用

import numpy as np (np为引入模块的别名)

2.N维数组对象:ndarray

数组对象可以去掉元素间运算所需的循环,使一维向量更像单个数据。

设置专门的数组对象,经过优化,可以提升这类应用的运算速度。

例:计算A^2 + B^3,其中,A和B是一维数组。

传统python语言写法:

 1 def pySum():
 2     a = [0,1,2,3,4]
 3     b = [9,8,7,6,5]
 4     c = []
 5 
 6     for i in range(len(a)):
 7         c.append(a[i]**2 + b[i]**3)
 8 
 9     return c
10 
11 print(pySum())

使用numpy编写:

 1 import numpy as np
 2 
 3 def npSum():
 4     a = np.array([0,1,2,3,4])
 5     b = np.array([9,8,7,6,5])
 6 
 7     c = a**2 + b**3
 8 
 9     return c
10 
11 print(npSum())

ndarray是一个多维数组对象,由两部分组成:

  1. 实际的数据
  2. 描述这些数据的元数据(数据维度、数据类型)

ndarray数组一般要求所有元素类型相同(同质),数组下标从0开始。

ndarray实例:

ndarray对象的属性

属性    说明

.ndim        秩,即轴的数量和维度的数量

.shpe        ndarray对象的尺度,对于矩阵,n行m列

.size         ndarray对象元素的个数,相当于.shape中n*m的值

.dtype       ndarray对象的元素类型

.itemsize     ndarray对象中每个元素的大小,以字节为单位

ndarray案例:

 ndarray的元素类型

数据类型        说明

bool    布尔类型,True或False

intc     与C语言中的int类型一致,一般是int32或int64

intp     用于索引的证书,与C语言中ssize_t一致,int32或int64

int18      字节长度的整数,取值:[-128,127]

int16    16位长度的整数,取值[-32768,32767]

int32    32位长度的整数,取值[-2^31,2^31-1]

int64      64位长度的整数,取值[-2^63,2^63-1]

uint8    8位无符号整数,取值:[0,255]

uint16    16位无符号整数,取值:[0,65535]

uint32    32位无符号整数,取值:[0,2^32-1]

uint64    64位无符号整数,取值:[0,2^64-1]

float16      16位半精度浮点数,1位符号位,5位指数,10位尾数

float32   32位半精度浮点数,1位符号位,8位指数,23位尾数

float64   64位半精度浮点数,1位符号位,11位指数,52位尾数

complex64     复数类型,实部和虚部都是32位浮点数 

complex128   复数类型,实部和虚部都是64位浮点数

对比:Python语法仅支持整数、浮点数和复数3种类型

  • 科学计算涉及数据较多,对存储和性能都有较高要求
  • 对元素类型精细定义,有助于NumPy合理使用存储空间并优化性能
  • 对数据元素精确定义,有助于程序员对程序规模有合理评估

ndarray实例:

ndarray数组可以由非同质对象构成

非同质对象为对象类型

非同质ndarray对象无法有效发挥NumPy优势,尽量避免使用

 3.ndarray数组的创建方法

  • 从Python中的列表、元组等类型创建ndarray数组
  • 使用NumPy中函数创建ndarray数组,如:arange,ones,zeros等
  • 从字节流(raw bytes)中创建ndarray数组
  • 从文件中读取特定格式,创建ndarray数组

-----------------------------------------------------------------------------------------------------------------------------

  • 从Python中的列表、元组等类型创建ndarray数组

  x = np.array(list/tuple)

  x = np.array(list/tuple,dtype=np.float32)   dtype可指定哪个元素的数据类型

当np.array()不指定dtype时,NumPy将根据数据情况关联一个dtype类型

  • 使用NumPy中函数创建ndarray数组,如:arange,ones,zeros等

函数             说明

np.arange(n)     类似range函数,返回ndarray函数类型,元素从0到n-1

np.ones(shape)      根据shape生成一个全1数组,shape是元组类型

np.zeros(shape)     根据shape生成一个全0数组,shape是元组类型

np.full(shape,val)   根据shape生成一个数组,每个元素值都是val

np.eye(n)       创建一个正方的n*n单位矩阵,对角线为1,其余为0

np.ones_like(a)              根据数组a的形状生成一个全1数组

np.zeros_like(a)     根据数组a的形状生成一个全0数组

np.full_like(a,val)       根据数组a的形状生成一个数组,每个元素值都是val


  使用NumPy中其他函数创建ndarray数组

  函数      说明

  np.linspace()    根据起止数据等间距地的填充数据,形成数组

  np.concatenate()   将两个或多个数组合并成一个新的数组


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值