本文主要是记录个人学习numpy的知识点(示例来源飞桨)
飞桨PaddlePaddle-源于产业实践的开源深度学习平台https://www.paddlepaddle.org.cn/tutorials/projectdetail/3991797
一、Numpy简介
NumPy(Numerical Python)是一个用于科学计算的Python库,主要用于创建多维数组、对多维数组执行各种计算以及在其他科学计算任务中使用这些数组。
NumPy中的数组可以是不同形状和大小的,包括矩阵和其他形式。它提供了许多用于处理数据的常用函数和线性代数运算,例如:傅里叶变换、随机数生成、排序、索引和切片、数组拼接和分离、形状操作等。
NumPy最大的优势就是其高效的数组运算和计算速度。NumPy中的数组是在更底层的语言(如C和Fortran)中实现的,因此可以获得更好的性能。另外,NumPy的广播功能还可以使具有不同形状的数组进行运算,从而使代码更加简洁和易于理解。
与Python的内置数据结构不同,NumPy中的数组可以进行向量化(vectorized)计算,即将简单的操作应用于整个数组,而不需要显式使用循环等迭代机制。这种向量化计算可以将数组和矩阵等复杂的数学操作以高效的方式实现。
NumPy也是许多其他Python科学计算库的基础,如Pandas、SciPy和Matplotlib等。这些库都可以在NumPy数组的基础上进行更高级的数学计算、数据处理和可视化操作。
综上所述,NumPy是一个非常强大的科学计算库,它提供了高效的数组运算和许多常用的数学函数,这使得它成为了Python科学计算领域的重要组成部分。
二、具体内容
1、ndarry数组
1、ndarry与list的区别
案例1:实现a+1的计算
# list
a = [1, 2, 3, 4, 5]
b = [2, 3, 4, 5, 6]
# 不能直接a=a+1
for i in range(5):
a[i] = a[i] + 1
print(type(a))
print(a)
# ndarry
import numpy as np
b = np.array([1, 2, 3, 4, 5])
b = b + 1
print(type(b))
print(b)
案例2:实现c=a+b的计算
# 使用numpy中的ndarray完成两个ndarray相加
import numpy as np
a = np.array([1, 2, 3, 4, 5])
b = np.array([2, 3, 4, 5, 6])
c = a + b
print(c)
案例3:ndarray数组还提供了广播机制
# 自动广播机制,1维数组和2维数组相加
import numpy as np
# 二维数组维度 2x5
# array([[ 1, 2, 3, 4, 5],
# [ 6, 7, 8, 9, 10]])
d = np.array([[1, 2, 3, 4, 5], [6, 7, 8, 9, 10]])
# c是一维数组,维度5
# array([ 4, 6, 8, 10, 12])
c = np.array([ 4, 6, 8, 10, 12])
e = d + c
print(e)
2、创建ndarry数组
(1)array
:创建嵌套序列(比如由一组等长列表组成的列表),并转换为一个多维数组。
(2)arange
:创建元素从0到10依次递增2的数组。
(3)zeros
:创建指定长度或者形状的全0数组。
(4)ones
:创建指定长度或者形状的全1数组。
3、查看ndarray数组的属性
ndarray的属性包括shape
、dtype
、size
和ndim
等,通过如下代码可以查看ndarray数组的属性。
shape
:数组的形状 ndarray.shape,1维数组(N, ),二维数组(M, N),三维数组(M, N, K)。dtype
:数组的数据类型。size
:数组中包含的元素个数 ndarray.size,其大小等于各个维度的长度的乘积。ndim
:数组的维度大小,ndarray.ndim, 其大小等于ndarray.shape所包含元素的个数。
import numpy as np
b = np.random.rand(10, 10)
print(b.shape)
print(b.size)
print(b.ndim)
print(b.dtype)
4、 改变ndarray数组的数据类型和形状
import numpy as np
a = np.ones([3, 3])
print(a)
print('a, dtype: {}, shape: {}'.format(a.dtype, a.shape))
# 转化数据类型
b = a.astype(np.int64)
print('b, dtype: {}, shape: {}'.format(b.dtype, b.shape))
# 改变形状
c = a.reshape([1, 9])
print('c, dtype: {}, shape: {}'.format(c.dtype, c.shape))
5 、ndarray数组的基本运算
ndarray数组可以像普通的数值型变量一样进行加减乘除操作,主要包含如下两种运算:
- 标量和ndarray数组之间的运算
- 两个ndarray数组之间的运算
5.1、标量和ndarray数组之间的运算
5.2 、两个ndarray数组之间的运算
不写了,大家去文章开头给链接去学习