说明:本blog基于python3版本, numpy 1.19.5
前言
我们在Numpy常见方法(0)中详细介绍了numpy在做大量数据运算处理的优势及底层原理,本文主要是介绍如何把numpy应用到实际工作中,包括三个方面:创建numpy对象和numpy基本属性、numpy的切片和numpy常见通用方法。
在这之前我首先介绍一个贯穿numpy应用的概念:ndarray;ndarray是python的一个大型,快速的数据集容器,所有ndarray类型的数据都存放在该容器中;该容器中的所有ndarray对象都有两个基本属性:shape 和 dtype。
一、创建numpy对象和numpy基本属性
numpy对象的创建主要是通过 numpy.array() 方法,该方法的作用对象是序列型数据,包括列表list,元组tuple,数组range, 和其他序列型数据。我们应用numpy.array() 方法时只需记住公式: numpy.array(序列型数据)
首先,我们用代码演示一下如何生成numpy对象
import numpy as np
a_list = [1,2,3]
b_tuple = (1,2,3)
c_range = range(3)
a = np.array(a_list)
b = np.array(b_tuple)
c = np.array(c_range)
print(a)
print(b)
print(c)
结果如下,
[1 2 3]
[1 2 3]
[0 1 2]
OK,我们接下来介绍一下每个ndarray类型的数据都具有的两个基本属性,shape和dtype
shape 返回的是ndarray类型数据的“形状”, 学过线性代数的同学都知道,一个高维数据都是有“形状的”, 比如 N * M, 代表一个数据由N行M列组成,是一个二维数据;那么我们演示一下如何使用shape方法获得数据的维度;
假设我们现在创建一个3维数据
import numpy as np
a = np.array([[[1,2,3,3],[1,2,3,3],[1,2,3,3]], [[6,7,8,8],[6,7,8,8],[6,7,8,8]]])
b = a.shape
print(b)
结果如下,
(2, 3, 4)
也就是说我们目前设置的a是一个 2 * 3 * 4的三维ndarray;有同学可能困惑如何计算a的维度,其实很简单,记住一个原则:从外往里扒括号
本题中最外层是两个并列元素,[[1,2,3,3],[1,2,3,3],[1,2,3,3]] 和 [[6,7,8,8],[6,7,8,8],[6,7,8,8]];第二层是三个并列元素, [1,2,3,3],[1,2,3,3],[1,2,3,3] 或者 [6,7,8,8],[6,7,8,8],[6,7,8,8];最内层是4个并列元素,[1,2,3,3] 或 [1,2,3,3]或[1,2,3,3] 或 [6,7,8,8]或 [6,7,8,8]或 [6,7,8,8];如果想有一个整体概念,可以把每个维度分别对应长宽高,那么这里的变量a 就是一个十足的长方体!是不是对高维矩阵有了更深的认识?!
另外一个基础属性是dtype, 这个属性可以帮助我们更改或确定ndarray类型数据内部元素的基本属性,比如,如果我们在创建ndarray数据时想让ndarray中的元素为 双精度浮点数,那么我们在np.array()方法中加入dtype属性名,并设置为 dtype = numpy.float64;
【注:有的元素不能成功转化为我们想要的数据类型,比如我们把string类型的数据转化为双精度浮点数类型(numpy.float)的数据时,就会报ValueError!!!】
我们用代码演示一下dtype属性以及如何更改ndarray类型中元素的数据类型
(常用astype方法)
import numpy as np
###我们首先把a中的元素数据类型设置为双精度浮点数
a = np.a

本文详细介绍了numpy在Python中的应用,包括如何创建和理解ndarray对象的shape和dtype属性,使用直接切片和布尔索引进行数据选择,以及常见的一元和二元通用函数的使用。通过实例解析了numpy切片可能导致的视图修改原数组的问题,并强调了布尔索引能避免此类问题。此外,还展示了通用函数如平方、最大值等在数据处理中的应用。
最低0.47元/天 解锁文章





