NumPy基本操作与常用函数

本文详细介绍了NumPy的基本操作,包括创建数组、属性(shape, dtype, ndim, size)、数组切片、广播机制、向量化运算、类型转换及矩阵的特定维度运算。还探讨了numpy的其他常用方法,如求均值、矩阵变形、舍入取整等,以及浅拷贝和深拷贝的概念。" 111952930,10326002,管理信息系统:MRP应用范围与决策支持系统解析,"['管理信息系统', '决策支持系统', 'MRP', 'ERP', '业务流程重组']
摘要由CSDN通过智能技术生成

声明

本文涉及的代码基于python 3.6.5 numpy 1.14.3
使用numpy模块之前首先需要在代码之前导入该模块

import numpy as np

文中会用到world_alcohol.txt文件,其中的数据格式如下所示(第一行为标题):

Year,WHO region,Country,Beverage Types,Display Value
1986,Western Pacific,Viet Nam,Wine,0
1986,Americas,Uruguay,Other,0.5
1985,Africa,Cte d'Ivoire,Wine,1.62
1986,Americas,Colombia,Beer,4.27

创建数组

numpy.array()函数的输入参数可以是一个list或者是list of lists。
当输入参数为list时,我们得到一个一维数组。

vector = np.array([5, 10, 15, 20])
print(vector)
# [ 5 10 15 20]

当输入参数为list of lists时,我们可以得到一个矩阵。

matrix = np.array([[5, 10, 15], [20, 25, 30], [35, 40, 45]])
print(matrix)
# [[ 5 10 15]
#  [20 25 30]
#  [35 40 45]]

我们可以使用numpy.arange()方法创建给定区间,固定步长的数组或矩阵,例如:

vector = np.arange(15)
print(vector)  # [ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14]

我们还可以使用ndarray的reshape方法得到自己想要形状的矩阵:

matrix = np.arange(21, 81, 3).reshape(4, 5)
print(matrix)
# [[21 24 27 30 33]
#  [36 39 42 45 48]
#  [51 54 57 60 63]
#  [66 69 72 75 78]]

我们还可以利用numpy.zeros()方法和numpy.ones()方法获取全0矩阵和全1矩阵。

z = np.zeros((2, 3))
print(z)
# [[0. 0. 0.]
#  [0. 0. 0.]]
o = np.ones((2, 3), dtype=int)
print(o)
# [[1 1 1]
#  [1 1 1]]

我们还可以利用随机数创建矩阵:

# 利用[0, 1)之间的随机数创建2行3列的矩阵
r = np.random.random_sample((2, 3))
print(r)
# [[0.1013597  0.41281383 0.2252911 ]
#  [0.4636549  0.92180822 0.60799557]]

# 利用[2, 7)之间的随机数创建2行3列的矩阵
r = 5 * np.random.random_sample((2, 3)) + 2
print(r)
# [[2.87507067 6.21924318 5.68927464]
#  [4.96606253 4.44709691 2.54297613]]

# 利用[0, 20)之间的随机整数创建2行3列的矩阵
r = np.random.randint(0, 20, size=(4, 5))
print(r)
# [[19  0  7 15  0]
#  [12  2  6 16  1]
#  [10 15 12 19 11]
#  [11 17 13 12 10]]

# # 利用标准正态分布创建2行2列的矩阵
r = np.random.randn(2, 3)
print(r)
# [[-0.10322776  0.64940133 -0.33607361]
#  [-0.71023991  0.53969707  0.60760233]]

另外,numpy.linspace()方法也可以用来创建数组或矩阵,效果和numpy.arange()类似。

lin = np.linspace(2.0, 3.0, num=5)
print(lin)
# [2.   2.25 2.5  2.75 3.  ]

需要注意的是,numpy.linspace()默认的是在闭区间内获取数据,可以设置endpoint=False设置为左闭右开区间。另外,numpy.arange()方法利用step参数设置区间步长,而numpy.linspace()方法利用num参数设置区间内获取的数据个数,默认是50个。
还有很多方法可以创建numpy数组或矩阵,后面发现会继续完善。

shape属性

我们可以使用ndarray.shape属性获取数组中的元素个数或者说数组的形状。

print(type(vector))
print(type(matrix))
print(vector.shape)
print(matrix.shape)
# <class 'numpy.ndarray'>
# <class 'numpy.ndarray'>
# (4,)
# (3, 3)

dtype属性

需要注意的一点是numpy数组中的每个值必须具有相同的数据类型,当利用lists创建数组时或者读取数据到数组中时,numpy将自动确定适当的数据类型。我们可以是使用numpy数组的dtype属性检查数组的数据类型

numbers = np.array([1, 2, 3, 4])
print(numbers.dtype)  # int32
numbers = np.array([1, 2, 3, '4'])
print(numbers.dtype)  # <U11

ndim属性

我们可以用ndim属性获取矩阵的维度。例如:

matrix = np.arange(6).reshape(2, 3)
print(matrix)
# [[0 1 2]
  • 6
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值