NumPy 系列教程 001:入门和使用数组

简介: NumPy 系列教程 001:入门和使用数组

重点预告:下面要讲,NumPy 的入门和数组的常用方式

1、NumPy 很强的

虽然 Python 中的 List 可以当作数组来用,但 List 中的元素能设置成任意类型的,就像大乱炖一样,维护起来的成本很高。List 为了能区分它们,会额外保存 List 中每个对象的指针,哪怕一个简单的 [1, 2, 3] 都要对应开辟三个指针来指向三个整数对象。如果进行数值运算的话,采用 List 这种结构,效率明显是低效的。还有 Python 中的 array 模块,它也没很丰富的运算函数供调用,而且它仅仅能处理一维数组,不支持多维数组

所以,Python 数值运算这块儿还是有瓶颈的,但好在 NumPy 的出现完美弥补上了这一不足,NumPy 支持多维度数组和矩阵运算,还额外提供了大量的专业数学函数库,更强的是,NumPy 对很多主流三方库,比如 Pandas、SciPy 提供了底层实现。

2、使用 NumPy

如果你已经安装并使用 Anaconda,恭喜你,NumPy 已经被默认安装好了。在你使用的时候,直接导入 NumPy 模块就好了,非常的方便,导入方式如下:

# 导入 numpy 模块,取个别名 np
import numpy as np

3、NumPy 数组

终于迎来了第一个悍将 —— ndarray 对象,它就是 NumPy 支持多维数组的对象,它要求所包含的元素的类型必须是一致的。

先来看第一个常用方法:array(),用于生成 NumPy 数组,你可以给它传任意数据类型。

如果创建 NumPy 数组的数据类型不一致,则它会向上转型来保持数据源类型的统一性。比如说,既有 int 类型,又有 float 类型,由于 float 的精度更高,所以 NumPy 会把所有数据都自动转成 float 类型,也就是「乖乖地跟着大哥走」。

# 列表中,有 int 和 float 两种不同类型的数据
myData = [1, 2.22, 3, 4, 5.0]
 
# 将其转成 NumPy
myData = np.array(myData)
 
# 输出数组
myData

输出如下:

array([1.  , 2.22, 3.  , 4.  , 5.  ])

如果你要看数组元素的类型,直接通过 dtype 属性就可以查看了,比如 myData 的数据类型是 float64。

# 通过 dtype 属性,查看数据类型
myData.dtype

输出如下:

dtype('float64')

如果我想转成指定类型的数据呢?直接通过 astype() 方法就可以实现,比如,转成 int32 :

# 强制转成 int32 类型
myData.astype(np.int32)

输出如下:

array([1, 2, 3, 4, 5], dtype=int32)

多维数组的创建方式,也一样,不过,是需要把一个数组嵌套到另一个数组中,你看:

# 创建多维数组
myData2 = [[1,2,3,4,5], [6,7,8,9,10]]
 
myData2 = np.array(myData2)
 
myData2

上面创建了一个数组,里面包含了两个小数组,小数组都有五个数组元素,输出如下:

array([[ 1,  2,  3,  4,  5],

      [ 6,  7,  8,  9, 10]])

如果你要更细致地创建数组,可以使用 arange() 函数,它跟 Python 内置的 range() 函数类似,但 range() 只能用来循环迭代,返回的是一个可迭代对象,而 arange() 函数返回的数组,还可以当作向量,能做更多运算。

# 对比,返回的类型不一样
print(type(np.arange(10)))
print(type(range(10)))

输出如下:

<class 'numpy.ndarray'>

<class 'range'>

arange() 函数还能指定起始值(start,默认为 0)、终止值(stop,取值区间是左闭右开,取左不取右的值)、步长(step,默认为 1)、返回 ndarray 的数据类型等参数(dtype,不强制指定,则默认为原数据类型)。

# 创建一个包含 100 个元素的数组
myData3 = np.arange(100)
 
print(myData3)

输出如下:

[ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23

24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47

48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71

72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95

96 97 98 99]

arange() 函数返回的数组,可运算,让他们各自都加上 2 :

# 让每个元素都加上 2
print(myData3 + 2)

输出如下:

[  2   3   4   5   6   7   8   9  10  11  12  13  14  15  16  17  18  19

 20  21  22  23  24  25  26  27  28  29  30  31  32  33  34  35  36  37

 38  39  40  41  42  43  44  45  46  47  48  49  50  51  52  53  54  55

 56  57  58  59  60  61  62  63  64  65  66  67  68  69  70  71  72  73

 74  75  76  77  78  79  80  81  82  83  84  85  86  87  88  89  90  91

 92  93  94  95  96  97  98  99 100 101]

还可以在创建数组的时候,指定步长,相当于等差数列,每个元素之间相差指定的数值(可以是任意实数):

# 指定步长为 10
myData4 = np.arange(0, 20, 3)
 
myData4

输出如下:

array([ 0,  3,  6,  9, 12, 15, 18])

再来个更好用的,如果我想自动生成(其实就是不想自己算)一个指定范围和指定等差的数组,可以用 linspace() 函数实现。

# 生成一个指定范围和指定等差的数组
myData5 = np.linspace(0,100,30)
 
myData5

也就是,在 0~100 的范围内,自动生成 30 个等差数据并返回数组,根本不需要自己去人肉手动计算,非常方便,输出如下:

array([  0.        ,   3.44827586,   6.89655172,  10.34482759,

       13.79310345,  17.24137931,  20.68965517,  24.13793103,

       27.5862069 ,  31.03448276,  34.48275862,  37.93103448,

       41.37931034,  44.82758621,  48.27586207,  51.72413793,

       55.17241379,  58.62068966,  62.06896552,  65.51724138,

       68.96551724,  72.4137931 ,  75.86206897,  79.31034483,

       82.75862069,  86.20689655,  89.65517241,  93.10344828,

       96.55172414, 100.        ])

今日分享结束,欢迎大家点赞、在看、评论、赞赏一条龙,让我感受你对我浓浓的爱,感谢你的支持。

最后

我是帅帅,一个默默做了 7 年的 Java 编程、架构师成长教练。

很喜欢罗曼·罗兰的一句话:“人最可贵之处在于看透生活的本质后,依然热爱生活 ”。

愿我们一起,努力追寻本质,依然保持热爱。

如果想交个朋友,帅帅等你来聊

目录
相关文章
|
11天前
|
Python
Numpy学习笔记(四):如何将数组升维、降维和去重
本文介绍了如何使用NumPy库对数组进行升维、降维和去重操作。
24 1
|
19天前
|
机器学习/深度学习 并行计算 大数据
【Python篇】NumPy完整指南(上篇):掌握数组、矩阵与高效计算的核心技巧2
【Python篇】NumPy完整指南(上篇):掌握数组、矩阵与高效计算的核心技巧
44 10
|
11天前
|
Python
Numpy学习笔记(五):np.concatenate函数和np.append函数用于数组拼接
NumPy库中的`np.concatenate`和`np.append`函数,它们分别用于沿指定轴拼接多个数组以及在指定轴上追加数组元素。
20 0
Numpy学习笔记(五):np.concatenate函数和np.append函数用于数组拼接
|
13天前
|
Python
使用 NumPy 进行数组操作的示例
使用 NumPy 进行数组操作的示例
28 2
|
19天前
|
索引 Python
【Python篇】NumPy完整指南(上篇):掌握数组、矩阵与高效计算的核心技巧1
【Python篇】NumPy完整指南(上篇):掌握数组、矩阵与高效计算的核心技巧
71 4
|
19天前
|
机器学习/深度学习 并行计算 调度
CuPy:将 NumPy 数组调度到 GPU 上运行
CuPy:将 NumPy 数组调度到 GPU 上运行
40 1
|
28天前
|
Python
numpy | 插入不定长字符数组测试OK
本文介绍了如何在numpy中创建和操作不定长字符数组,包括插入和截断操作的测试。
|
5天前
|
数据挖掘 索引 Python
Python数据分析篇--NumPy--入门
Python数据分析篇--NumPy--入门
15 0
|
1月前
|
数据可视化 Python
NumPy 教程 之 NumPy Matplotlib 7
使用Python的绘图库Matplotlib与NumPy结合进行数据可视化,提供Matplotlib作为MatLab开源替代方案的有效方法,以及如何利用plt()函数将数据转换成直观的直方图示例。
35 11
|
27天前
|
API Python
Numpy 数组的一些集合操作
Numpy 数组的一些集合操作
26 0