NumPy总结(一):创建一个NumPy数组

NumPy总结(一):创建一个NumPy数组

相关参考资料

NumPy,便是Numerical Python的简称。意为:数字的Python。
在某些方面,NumPy数组与Python内置的列表类型非常相似。但随着数组在维度上变大,Numpy数组提供了更高效的存储和数据操作。NumPy数组Python数据科学工具生态系统核心


注:转载请注明出处


1. 基本概述

在一般的Python代码中,变量所采用的是动态数据类型,如下段代码:

x = 4
x = 'four'

这里已经将变量x整型变成了字符串类型,这便是Python程序所特有的灵活性,但这也会使得每种类型的结构体中含有大量的额外信息。以便支持这种灵活性的操作。

又如下面的Python列表类型:

list1 = [True, '2', 3]

在这个Python的列表类型中,每个元素的数据类型都可以不同,为保证这种灵活性,每一个元素必须包含各自类型信息,也就是说,列表中的每一个元素都是一个完整的Python对象。 而与此相对应,固定类型的NumPy式数组缺乏这种灵活性,但能更有效地存储和操作数据

也就是说,NumPy数组包含同一类型的值,而Python列表中元素类型可以不一致。这便是NumPy数组与Python列表的不同之处。

在使用NumPy模块之前,需进行导入,惯例一般将其名称设置为np

import numpy as np

2. 创建NumPy数组

2.1 使用np.array从列表进行创建

首先,可以用np.arrayPython列表创建数组:

array1 = np.array([1, 2, 3, 4, 5])
print('NumPy数组为: ',array1)
print('Python列表为:', [1, 2, 3, 4, 5])
NumPy数组为:  [1 2 3 4 5]
Python列表为: [1, 2, 3, 4, 5]

注意:
1. NumPy数组与Python列表的形式不同:
NumPy数组无逗号,用空格进行分隔;
Python列表则使用逗号进行分隔。

2. NumPy数组必须包含同一类型的数据,如果类型不匹配,NumPy会向上转换,即向更高级别的数据类型转换,如整型向浮点型转换:

array2 = np.array([3.14, 1, 2])
print(array2)
[3.14 1.   2.  ]

2.2 dtype关键字进行数组数据类型的设置

若希望明确设置数组的数据类型,可以用dtype关键字

array3 = np.array([3.14, 1, 2], dtype = 'int32')
print(array3)
[3 1 2]

注意
1.dtype后的格式若为int、float,则可不加引号;而若为int32、float32等,则必须加引号


2.3 创建多维列表

不同于Python列表,NumPy数组可以被指定为多维的。如下利用嵌套列表初始化多维数组:

array4 = np.array([range(i, i+3) for i in [2, 4, 6]])
print(array4)
[[2 3 4]
 [4 5 6]
 [6 7 8]]

2.4 使用NumPy内置方法创建

在面对大型数组的时候,用Numpy内置的方法从头创建数组是一种更高效的方法。

1np.zeros:值全为 0 的数组

array5 = np.zeros(10, dtype = int) #一维数组
array6 = np.zeros((3, 5), dtype = int) #二维数组
print('array5 =',array5)
print('array6 =',array6)
array5 = [0 0 0 0 0 0 0 0 0 0]
array6 = [[0 0 0 0 0]
 [0 0 0 0 0]
 [0 0 0 0 0]]

2np.ones:值全为 1 的数组

array7 = np.ones(10, dtype = int) #一维数组
array8 = np.ones((3, 5), dtype = int) #二维数组
print('array7 =',array7)
print('array8 =',array8)
array7 = [1 1 1 1 1 1 1 1 1 1]
array8 = [[1 1 1 1 1]
 [1 1 1 1 1]
 [1 1 1 1 1]]

3np.full:值全为 设置值 的数组

array9 = np.full(10, 3.14) #一维数组
array10 = np.full((3, 5), 3.2) #二维数组
print('array9 =',array9)
print('array10 =',array10)
array9 = [3.14 3.14 3.14 3.14 3.14 3.14 3.14 3.14 3.14 3.14]
array10 = [[3.2 3.2 3.2 3.2 3.2]
 [3.2 3.2 3.2 3.2 3.2]
 [3.2 3.2 3.2 3.2 3.2]]

4np.arange:线性序列数组,如**range()**类似(左闭右开区间

array11 = np.arange(0, 20, 2)
print('array11 =',array11)
array11 = [ 0  2  4  6  8 10 12 14 16 18]

5np.linspace:均匀分配序列数组 (闭区间

array12 = np.linspace(0, 1, 5)
print('array12 =',array12)
array12 = [0.   0.25 0.5  0.75 1.  ]

6np.random.random:0~1均匀分布的随机数

array13 = np.random.random((3,3))
print('array13 =',array13)
array13 = [[0.351325   0.21198856 0.33438375]
 [0.34795518 0.94751665 0.53576009]
 [0.90172469 0.8647817  0.15762703]]

7np.random.normal:均值、标准差为设置值的正态分布随机数数组

array14 = np.random.normal(0, 1, (3,3))
print('array14 =',array14)
array14 = [[ 0.78272478  0.53343682  2.28611418]
 [ 0.7060398  -1.03404058 -0.4452683 ]
 [ 1.62295592  0.45360629  1.43592776]]

8np.random.randint:区间为设置值内的随机整型数组

array15 = np.random.randint(0, 10, (3,3))
print('array15 =',array15)
array15 = [[4 5 0]
 [8 6 1]
 [7 4 3]]

9np.eye:生成设置大小的单位矩阵

array16 = np.eye(3)
print('array16 =',array16)
array16 = [[1. 0. 0.]
 [0. 1. 0.]
 [0. 0. 1.]]

10np.empty:生成未初始化数组,值为任意值

array17 = np.empty(3)
print('array17 =',array17)
array17 = [1. 1. 1.]

以上便是NumPy最基础的概述以及其创建方法,本节的Jupyter notebook代码与readme文件已上传至GitHub,此外,还有英文版的《PythonDataScienceHandbook》的Jupyter notebook文件也已经开源,Github代码点击则可查阅。

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值