Python中NumPy模块介绍

这篇文章提供了在 Python 中开始使用 NumPy 的介绍性文档。

# 将 numpy 导入此 python 脚本
import numpy 
# 构建一些列表并使用 Python 基础库添加它们
a = [1,2,3] 
b = [1,2,3] 
a+b
[1, 2, 3, 1, 2, 3]
# 用 numpy 声明一个数组
a_np = numpy.array([1,2,3]) 
# 检查数组的类型以确认它是一个 numpy 数组
type(a_np)
numpy.ndarray
# numpy数组有一个属性.dtype,可以让你检查数组
a_np.dtype的numpy数据类型
dtype('int32')
# a_np 是整数类型;让我们尝试分配一个 float 
a_np[0] = 13.33 
a_np
数组([13, 2, 3])
# numpy数组有一个.ndim属性,可以让你看到数组的维数
a_np.ndim
1个
# numpy 数组也有一个 .size 属性;
# .size 允许您查看数组
a_np.size包含的元素数
3个
# 当使用 numpy 数组时,数学在元素方面成为可能
# -- 创建第二个 numpy 数组来测试一些元素方面的数学运算
b_np = numpy.array([2,3,4]) 
# 添加
a_np + b_np
阵列([11,-1,-1])
# 减法
a_np - b_np
阵列([11,-1,-1])
# 乘法
a_np * b_np
数组([26, 6, 12])
# 一个的幂
a_np ** b_np
数组([169, 8, 81], dtype=int32)
#
划分 a_np / b_np
阵列([6.5,0.66666667,0.75])
#模;测试 a_np 模 2 
a_np % numpy.array([2,2,2])
数组 ([1, 0, 1], dtype=int32)
#模;测试 b_np 模 2 
b_np % numpy.array([2,2,2])
数组([0, 1, 0], dtype=int32)
# numpy 允许使用“通用函数”;
# universal functions work element-wise, with numpy arrays 
# 一个例子是
.sin numpy.sin(a_np)
阵列([0.42016704,0.90929743,0.14112001])
# 另一个例子是 .sqrt 
numpy.sqrt(a_np)
阵列([3.60555128,1.41421356,1.73205081])
# 使用 numpy 构建二维数据表
c_np = numpy.array([[1,2,3], 
                   [4,5,6]]) 
c_np
数组([[1, 2, 3], 
       [4, 5, 6]])
# 索引,即获取存储在定义单元格中的值;
# 此处:第一行第一列的单元格
c_np[0][0]
1个
# 这里:最后一行的单元格,最后一列
c_np[-1][-1]
6个
# 此处:第二行第一列的单元格
c_np[1][0]
4个
# 执行上述操作的另一种方法
c_np[1,0]
4个
# 对简单的一维 numpy 数组进行切片
# 此处:在 d_np 中获取第二个和第三个值
d_np = numpy.array([7,9,11]) 
d_np[1:3]
数组([ 9, 11])
# 获取第一个和第三个元素
d_np[0:3:2] # from:to:step
数组([ 7, 11])
# 此处:获取 d_np d_np[::2]中的所有其他元素
数组([ 7, 11])
# 这里:获取每三个元素
d_np[::3]
阵列([7])
# 我们可以使用 .arange 创建一维数组,这是 numpy 模块中的一种方法
e_np = numpy.arange(0,26) #param1: from; param2:to(排除最后一个值)
e_np
数组([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 
       17, 18, 19, 20, 21, 22, 23 , 24, 25])
# 让我们检查一下 e_np 的
类型 type(e_np)
numpy.ndarray
# numpy 数组可以重新整形,使用 numpy .reshape 方法
f_np = e_np.reshape(2,13)​​ #param1:行数;param2: 
f_np的列数
数组([[ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], 
       [13, 14, 15, 16, 17, 18, 19, 20, 21, 22、23、24、25]])
# 我不仅可以使用 .reshape 从 1D 创建 2D;
# 例如看这个
g_np = numpy.array([1,2,3,4,5,6,7,8,9,10,11,12]).reshape(3,2,2) 
g_np
array([[[ 1, 2], 
        [ 3, 4]], 

       [[ 5, 6], 
        [ 7, 8]], 

       [[ 9, 10], 
        [11, 12]]])
# g_np 也不是 3D 的;让我们从这个数据立方体中切出一些维度
# 第二个维度的第一个方向上的所有值
g_np[:,0,:]
array([[ 1, 2], 
       [ 5, 6], 
       [ 9, 10]])
# 一个特定的单元格;所有维度中的第一个
g_np[0,0,0]
1个
# 一个特定的单元格;最后在所有维度
g_np[-1,-1,-1]
12
# 一个特定的单元格;所有维度中倒数第二个
g_np[-2,-2,-2]
5个
# 让我们用另一个例子来完成关于 numpy 的第一个教程;
# 我创建了一个二维数组并展示给你
example = numpy.array([[1,2,3,4,5], 
                      [1.1,2.2,3.3,4.4,5.5], 
                      [1.11,2.22,3.33,4.44 ,5.55], 
                      [1.111,2.222,3.333,4.444,5.555], 
                      [1.1111,2.2222,3.3333,4.4444,5.5555]])
例子
array([[1., 2., 3., 4., 5.], 
       [1.1, 2.2, 3.3, 4.4, 5.5], 
       [1.11, 2.22, 3.33, 4.44, 5.55], 
       [1.111, 2.222, 3.333 , 4.444 , 5.555 ], 
       [1.1111, 2.2222, 3.3333, 4.4444, 5.5555]])
# 现在让我们访问值 2.2、4.4、2.222 和 4.444 - 仅在一行代码
示例中 [1::2,1::2]
阵列([[2.2,4.4],
       [2.222,4.444]])
# 现在举几个例子当你
通过引用复制时会发生什么
a_np = numpy.array([1,2,3]) 
b_np = a_np[:1] 
b_np
阵列([1])
# 改变 b_np 元素
b_np[0] = 10000 
b_np
阵列([10000])
# 让我们 npw 检查 a_np 
a_np
数组([10000, 2, 3])
# 以上是引用复制的效果;
# 当我们对 numpy 数组进行切片时会发生这种情况;
# 标准 python 列表会发生这种情况吗?
a = [1,2,3] 
b = a[:1] 
b[0] = 1000 
a
[1, 2, 3]
# 在 pyhton 中切片默认列表时不会发生按引用复制;
# 如果我们不想通过引用复制,那么我们可以使用 .copy() 方法,作为 numpy 的一部分
c_np = numpy.array([1,2,3,4,5]) 
d_np = c_np.copy() 
d_np [0] = 10000 
c_np[0] = 99999 
# 现在检查 c_np 
print("this is c_np:" + str(c_np))
这是 c_np:[99999 2 3 4 5]
# d_np 呢?
d_np
数组([10000, 2, 3, 4, 5])
# 使用 .copy() 进行复制允许使用两个具有独立引用的对象;

You May Also Like

Leave a Reply

Leave a Reply

您的电子邮箱地址不会被公开。 必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据