Numpy简介

1 Numpy介绍

  • Numpy(Numerial Python) 用于快速处理任意维度的数组
  • 支持常见的数组和矩阵操作,同样的数值计算任务比直接使用python简洁
  • 使用ndarray对象来处理多维数组

2 ndarray介绍

  • ndarray是Numpy的一个N维数组类型ndarray,它描述了相同类型的“items”的集合
  • 举例:学生分数
    Numpy简介
    用ndarray进行存储:
import numpy as np

# 创建ndarray
score = np.array(
[[80, 89, 86, 67, 79],
[78, 97, 89, 67, 81],
[90, 94, 78, 67, 74],
[91, 91, 90, 67, 69],
[76, 87, 75, 67, 86],
[70, 79, 84, 67, 84],
[94, 92, 93, 67, 64],
[86, 85, 83, 67, 80]])

score

返回结果:

array([[80, 89, 86, 67, 79],
       [78, 97, 89, 67, 81],
       [90, 94, 78, 67, 74],
       [91, 91, 90, 67, 69],
       [76, 87, 75, 67, 86],
       [70, 79, 84, 67, 84],
       [94, 92, 93, 67, 64],
       [86, 85, 83, 67, 80]])

3 ndarray与Python原生list运算效率对比

  • 通过以下代码进行对比
import random
import time
import numpy as np
a = []
for i in range(100000000):
    a.append(random.random())

# 通过%time魔法方法, 查看当前行的代码运行一次所花费的时间
%time sum1=sum(a)

b=np.array(a)

%time sum2=np.sum(b)

结果:

CPU times: user 852 ms, sys: 262 ms, total: 1.11 s
Wall time: 1.13 s
CPU times: user 133 ms, sys: 653 µs, total: 133 ms
Wall time: 134 ms

注:数组越大,Numpy的优势就越明显

4 ndarray的优势

  • 内存块分格
    ndarray在存储元素时内存可以连续,而python原生list就只能通过寻址方式找到下 一个元素,这虽然也导致了在通用性能方面Numpy的ndarray不及Python原生list。
    Numpy简介
  • ndarray支持并行化运算(向量化运算),numpy会自动做并行计算
  • ndarray底层是用C语言写的,效率更高,释放了GIL
上一篇:JAVA Leetcode232. 用栈实现队列


下一篇:用C++实现中国象棋