NumPy

浏览 1338

课文

NumPy是Python中的一个运算速度非常快的一个数学库,它非常重视数组。它允许你在Python中进行向量和矩阵计算,并且由于许多底层函数实际上是用C编写的,因此你可以体验在原生Python中永远无法体验到的速度。

NumPy绝对是科学Python成功的关键之一,如果你想要进入Python中的数据科学和/或机器学习,你就要必须学习它。在我看来,NumPy的API设计得很好,所以我们要开始使用它并不困难。

这是一系列关于科学Python的文章中的第二篇,别忘了看看其他的哟(译者注:并不会放出所有的文章,只摘取部分文章)。

做数据分析的时候,我们少不了跟矢量和矩阵、线性代数等数学运算打交道。

在少数情况下我们可以编写简单的函数来解决,但更多时候,我们有更方便使用的库.

数组的操作

创建一个数组

import numpy as np

# 创建一个一维数组
a = np.array([0, 1, 2, 3, 4])
# 创建一个二维数组
b = np.array(
    [
        [11, 12, 13, 14, 15],
        [21, 22, 23, 24, 25],
        [31, 32, 33, 34, 35],
        [41, 42, 43, 44, 45],
        [41, 42, 43, 44, 45],
    ]
)

print("a 的维数:", a.ndim)
print("a 的元素数量:", a.size)
print("a 的形状:", a.shape)

print("b 的维数:", b.ndim)
print("b 的元素数量:", b.size)
print("b 的形状:", b.shape)
a 的维数: 1
a 的元素数量: 5
a 的形状: (5,)
b 的维数: 2
b 的元素数量: 25
b 的形状: (5, 5)
print(np.zeros((3, 4))) # 创建一个形状 3 x 4 所有元素都为 0 的数组
print(np.ones( (2, 3), dtype=np.int16 )) # 创建一个形状 2 x 3
                                         # 所有元素都为 1
                                         # 类型为 int16 的数组
print(np.empty((4, 35))) # 创始数组时不进行初始化,里面的元素可能为任何值

数组切片

# 针对一维数组切片
print(a[2:4]) # [2 3]
print(a[2:])  # [2 3 4]
print(a[:4])  # [0 1 2 3]
print(a[:])   # [0 1 2 3 4]
# 针对二维数组切片
print(b[:2])       # [[11 12 13 14 15]
						       # [21 22 23 24 25]]

print(b[2:4, 2:4]) # [[33 34]
                   # [43 44]]

print(b[:, 2:4])   # [[13 14]
									 # [23 24]
									 # [33 34]
									 # [43 44]
									 # [43 44]]

print(b[:, 2])     # [13 23 33 43 43]

更改数组的形状

通过 reshape 我们可以改变数组的形状。

# 通过 reshape 调整形状
print(a.reshape(2, 3)) # [[0 1 2]
											 # [3 4 5]]

# 两种方法都能将数组转成一维数组
print(b.ravel()) # [11 12 13 14 ...... 45 41 42 43 44 45]
print(b.reshape(-1)) # [11 12 13 14 ...... 45 41 42 43 44 45]

评论

登录参与讨论

暂无评论

共 0 条
  • 1
前往
  • 1