Python——NumPy库入门

1、数据的纬度

维度:一组数据的组织形式

1.1 一维数据

一维数据由对等关系的有序或无序数据构成,采用线性方式组织 ,对应列表、数组和集合等概念 

列表:数据类型可以不同 ,如 3.1413, 'pi', 3.1404, [3.1401, 3.1349], '3.1376' 

数组:数据类型相同 。如:3.1413, 3.1398, 3.1404, 3.1401, 3.1349, 3.1376 

1.2 二维数据

二维数据由多个一维数据构成,是一维数据的组合形式。表格是典型的二维数据其中,表头是二维数据的一部分 。

1.3 多维数据

多维数据由一维或二维数据在新维度上扩展形成

1.4 高维数据

高维数据仅利用最基本的二元关系展示数据间的复杂结构

 

 

2、NumPy的数组对象:ndarray

NumPy是一个开源的Python科学计算基础库,包含:

一个强大的N维数组对象 ndarray 

广播功能函数

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

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

NumPySciPyPandas等数据处理或科学计算库的基础

2.1 NumPy的引用

 

2.2 N维数组对象:ndarray

例:计算 A2+B3,其中,AB是一维数组 。

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())

利用python 已有的列表类型和循环的方法可以求出结果,但是程序繁琐。

>>> print (npsum())
None
>>> 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())
[729 513 347 225 141]

利用numpy方式编程,可以看出,并没有使用循环,更简洁。

2.2.1  

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

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

观察:科学计算中,一个维度所有数据的类型往往相同

数组对象采用相同的数据类型,有助于节省运算和存储空间

 

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

实际的数据

描述这些数据的元数据(数据维度、数据类型等)ndarray数组一般要求所有元素类型相同(同质),数组下标从0开始 

2.2.2

np.array()输出成[]形式,元素由空格分割 。

8位(0或者1)组成一个字节。

2.3 

2.3.1ndarray数组的元素类型

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

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

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

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

2.3.2

非同质的ndarray

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

2.4 ndarray数组的创建

创建方法

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

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

从字节流(raw bytes)中创建ndarray数组

从文件中读取特定格式,创建ndarray数组 

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

x = np.array(list/tuple)

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

 

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

 

 

 2.5 ndarray数组的变换

2.5.1 纬度的变换

a并没有发生变化

a发生改变

输出一维,但是a并没有发生变化

2.5.2 ndarray数组的类型变换

new_a = a.astype(new_type)

2.5.3 ndarray数组向列表的转换

 ls = a.tolist()

 

2.6 ndarray数组的操作

数组的索引和切片

索引:找到特定位置的数据

切片:找到特定位置的一组数据

一维数组的索引和切片:与Python的列表类似

 

多维数组的索引:

多维数组的切片:

 2.7 ndarray数组的运算

 2.7.1 数组与标量之间的运算

2.7.2 NumPy一元函数

 2.7.3NumPy二元函数

 

 

 

 

原文地址:https://www.cnblogs.com/ruo-li-suo-yi/p/7711285.html