python中ndarray对象_Python——ndarray多维数组对象介绍

1.Numpy库介绍:

Numpy是Numercial Python的简称,是一个开源的Python科学计算基础库。

提供一个强大的N维数组对象ndarray,并提供了基于数组的算术操作及广播功能函数;

整合C/C++/Fortran代码工具;

线性代数、傅里叶变换、随机数生成等功能。

Numpy是Scipy、Pandas等数据处理或科学计算库的基础。

Numpy的引用直接使用以下语句即可:

import numpy as np # 尽管别名可以省略或者修改,建议使用上述约定的别名

2.多维数组对象ndarray的设置原因:

Python中可以利用列表表示数组,那Numpy为什么还要设置ndarray那?

例如,计算A²+B²,其中A和B是一维数组。

在python语法中,需要利用循环结构,计算数组中的每个数据。

def pysum():

a = [0,1,2,3,4]

b = [9,8,7,6,5]

c = []

for i in range(len(a)):

c.append(a[i]**2 + b[i]**3)

return c

print(pysum())

而NUmpy则把一个一维数据作为单个数据,直接进行计算。

import numpy as np

def npsum():

a = np.array([0,1,2,3,4])

b = np.array([9,8,7,6,5])

c = a**2 + b**3

return c

print(npsum())

从上面例子中可以看出,N维数组对象ndarray:

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

设置专门的数组对象,经过优化,可以提升这类应用的运算速度(numpy底层是由C语言编写,计算速度更快)。

数组对象采用相同的数据类型,有助于节省运算和存储空间(因为在科学计算中,一个维度所有数据的类型往往是相同的)。

3.多维数组对象ndarray:

ndarray是Python中一个快速、灵活的大型数据集容器,作为一个多维数组对象,由两部分构成:

实际的数据;

描述这些数据的元数据(数据维度、数据类型等):

ndarray数组一般要求所有要素类型相同(同质),数组下标从0开始(但也有特殊情况)。

轴(axis):保存数据的维度。

秩(rank):轴的数量。

4.生成ndarray:

生成数组最简单的方法就是使用array函数,array函数接收任意的序列型对象,生成一个Numpy数组。

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

x = np.array(list/tuple)

x = np.array(list/tuple,dtype=np.float32)

数组生成函数列表:

函数

说明

np.array()

----

np.asarray()

将输入转换为ndarray,但是如果输入已经是ndarray则不再复制

np.arange(n)

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

np.ones(shape)

根据shape生成一个全1数组,shape是元祖类型

np.ones_like(a)

根据数组a的形状生成一个全1数组

np.zeros(shape)

根据shape生成一个全0数组,shape是元祖类型

np.zeros_like(a)

根据数组a的形状生成一个全0数组

np.empty(shape)

根据shape生成一个没有初始化数值的空数组,shape是元祖类型

np.empty_like(a)

根据数组a的形状生成一个没有初始化数值的空数组

np.full(shape,val)

根据shape生成一个数组,每个元素都是val

np.full_like(a,val)

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

np.eye(n)

创建一个正方的n×n单位矩阵,对角线为1,其余为0

np.linspace()

根据起始数据等间距地填充数据,形成数组

5.ndarray对象的属性:

通过下述函数可以查看数组的相应属性信息。

属性

说明

.ndim

秩,即轴的数量或维度的数量

.shape

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

.size

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

.dtype

ndarray对象的元素类型

.astype

转换ndarray对象的数据类型

.itemsize

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

import numpy as np

a = np.array([[0,1,2,3,4],[9,8,7,6,5]])

a.ndim

Out[3]: 2

a.shape

Out[4]: (2, 5)

a.size

Out[5]: 10

a.dtype

Out[6]: dtype('int32')

a.itemsize

Out[7]: 4

6.ndarray对象的数据类型:

从上面实例中看到a.dtype返回的类型是int32,这个类型在基础的python语法中并不存在,它是numpy定义的元素类型,除此之外,numpy还有很多其他元素类型:

数据类型

说明

bool

布尔类型,True或False

intc

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

intp

用于索引的整数,与C语言中ssize_t一致,int32或int64

int8

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

int16

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

int32

32位长度的整数,取值:[-231,231-1]

int64

64位长度的整数,取值:[-263,263-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位尾数

ndarray还支持两种复数类型:

数据类型

说明

complex64

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

complex128

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

相比python语法仅支持整数、浮点数和复数3种类型,那ndarray为什么要支持这么多的元素类型那?

科学计算涉及数据较多,对存储和性能都有较高要求;

对元素类型精细定义,有助于Numpy合理使用存储空间并优化性能;

对元素类型精细定义,有助于程序员对程序规模有合理评估。

Reference:

《Python for Data Analysis:Data Wrangling with Pandas,Numpy,and IPython》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值