作为一个数学建模小白,在解决数学建模问题中,我们经常会遇见成千上万条的数据,在我们掌握利用Python进行数据处理之前,我们经常会对这类问题感到棘手,进而会放弃选择这类问题。
笔者在自己解决这类大数据问题时,由于没有掌握这类方法,也会经常感到头痛无法下手,而传统的教程似乎又太过冗长。所以这就是笔者撰写这类教程的初衷,帮助数学建模小白快速的熟悉并并掌握一定的方法。这个系列的第一部分是讲解数据科学库中的其中一种:NumPy库。
NumPy 是什么?
NumPy是Python中科学计算的基础包。它是一个Python库,提供多维数组对象,各种派生对象(如掩码数组和矩阵),以及用于数组快速操作的各种API,有包括数学、逻辑、形状操作、排序、选择、输入输出、离散傅立叶变换、基本线性代数,基本统计运算和随机模拟等等。
来源NumPy中文网:NumPy 用户指南 | NumPy 中文
安装NumPy
推荐阅读:Windows下安装numpy_白杨Shayne的博客-CSDN博客_windows安装numpy
那我们现在就开始!
NumPy Ndarray 对象
我们首先要介绍的就是NumPy最核心的对象Ndarray对象,你一定发现了array这个单词,作为学过一定C语言知识的你一定知道这个单词的中文含义是数组。猜的没错!NumPy Ndarray就是一种数组!只不过它要比Python语言自带的数组类型性能更加优异。
那么我们如何操作Ndarray对象?
首先试着在你的代码第一行导入NumPy科学计算库
import numpy as np
我们首先试着创造一维数组,这跟我们平时创建数组几乎没什么差异
import numpy as np
a = np.array([1,2,3])
这里我们将调用numpy缩写成np,创建numpy ndarray数组需要调用库中的array方法。
我们将这个数组输出,得到:
[1 2 3]
我们接着试着创建更高维度的二维数组!
输入如下代码:
import numpy as np
a = np.array([[1, 2], [3, 4]])
同样我们将刚刚创建好的对象a输出!得到:
[[1 2]
[3 4]]
很好!我们已经初步学会了ndarray数组的创建!
属性
实际上,ndarray数组有很多属于自己的属性,就像你自己有你的姓名,住址,性别一样。
ndarray数组的属性如下表所示:
属性 | 说明 |
---|---|
ndarray.ndim | 秩,即轴的数量或维度的数量 |
ndarray.shape | 数组的维度,对于矩阵,n 行 m 列 |
ndarray.size | 数组元素的总个数,相当于 .shape 中 n*m 的值 |
ndarray.dtype | ndarray 对象的元素类型 |
ndarray.itemsize | ndarray 对象中每个元素的大小,以字节为单位 |
ndarray.flags | ndarray 对象的内存信息 |
ndarray.real | ndarray元素的实部 |
ndarray.imag | ndarray 元素的虚部 |
ndarray.data | 包含实际数组元素的缓冲区,由于一般通过数组的索引获取元素,所以通常不需要使用这个属性。 |
ndarray.ndim
ndarray.ndim 用于返回数组的维数,等于秩。
a = np.arange(24)
print (a.ndim) # a 现只有一个维度
# 现在调整其大小
b = a.reshape(2,4,3) # b 现在拥有三个维度
print (b.ndim)
输出结果我们得到
1
3
这代表数组a维度为一维,而数组b的维度为三维
ndarray.shape
shape函数是用来改变数组的形状,如下例子就是使用shape函数将原来为2X3的数组改为了3X2大小的数组。
a = np.array([[1,2,3],[4,5,6]])
a.shape = (3,2)
print (a)
ndarray.flags
对一个numpy数组返回以下属性:
属性 | 描述 |
---|---|
C_CONTIGUOUS (C) | 数据是在一个单一的C风格的连续段中 |
F_CONTIGUOUS (F) | 数据是在一个单一的Fortran风格的连续段中 |
OWNDATA (O) | 数组拥有它所使用的内存或从另一个对象中借用它 |
WRITEABLE (W) | 数据区域可以被写入,将该值设置为 False,则数据为只读 |
ALIGNED (A) | 数据和所有元素都适当地对齐到硬件上 |
UPDATEIFCOPY (U) | 这个数组是其它数组的一个副本,当这个数组被释放时,原数组的内容将被更新 |
例子:
import numpy as np
x = np.array([1,2,3,4,5])
print (x.flags)
返回:
C_CONTIGUOUS : True
F_CONTIGUOUS : True
OWNDATA : True
WRITEABLE : True
ALIGNED : True
WRITEBACKIFCOPY : False
UPDATEIFCOPY : False
7816fb7eb005 6 月前
529d58229afd 6 月前