Numpy基础

在Numpy中,主要掌握的是数组array类型和矩阵matrix类型,其中matrix是array的子类型,它继承了array的所有特性并且有自己的特性。官方建议大家如果两个可以通用,那就选择array,因为array更灵活,速度更快。但是matrix的优势就是相对简单的运算符号,比如两个矩阵相乘,就是用符号*,但是array相乘不能这么用,得用方法.dot()。array的优势就是不仅仅表示二维,还能表示3、4、5...维。

一、array

Array是numpy里最基本类型,它是同类元素的多维数组。在NumPy中维度(dimensions)叫做轴(axes),轴的个数叫做秩(rank,但是和线性代数中的秩不是一样的,在用python求线代中的秩中,我们用numpy包中的linalg.matrix_rank方法计算矩阵的秩。

NumPy的数组类被称作ndarray。通常被称作数组。注意numpy.array和标准Python库类array.array并不相同,后者只处理一维数组和提供少量功能。ndarray对象属性有:

ndarray.ndim

数组轴的个数,在python的世界中,轴的个数被称作秩

ndarray.shape

数组的维度。这是一个指示数组在每个维度上大小的整数元组。例如一个n排m列的矩阵,它的shape属性将是(2,3),这个元组的长度显然是秩,即维度或者ndim属性

ndarray.size

数组元素的总个数,等于shape属性中元组元素的乘积。

ndarray.dtype

一个用来描述数组中元素类型的对象,可以通过创造或指定dtype使用标准Python类型。另外NumPy提供它自己的数据类型。

ndarray.itemsize

数组中每个元素的字节大小。例如,一个元素类型为float64的数组itemsiz属性值为8(=64/8),又如,一个元素类型为complex32的数组item属性为4(=32/8).

ndarray.data

包含实际数组元素的缓冲区,通常我们不需要使用这个属性,因为我们总是通过索引来使用数组中的元素。

1.创建array

使用array函数从常规的Python列表和元组创造数组。

a = array( [2,3,4] ) 

结果:array([2, 3, 4])

可使用双重序列来表示二维的数组,三重序列表示三维数组,以此类推。

b = array( [ (1.5,2,3), (4,5,6) ] ) 

结果:array([[ 1.5, 2. , 3. ],

    [ 4. , 5. , 6. ]])

可以在创建时显式指定数组中元素的类型

c = array( [ [1,2], [3,4] ], dtype=complex)

结果:array([[ 1.+0.j, 2.+0.j],

    [ 3.+0.j, 4.+0.j]])

用函数zeros可创建一个全是0的数组,用函数ones可创建一个全为1的数组,函数empty创建一个内容随机并且依赖与内存状态的数组。默认创建的数组类型(dtype)都是float64。

d = zeros((3,4))

结果:array([[ 0., 0., 0., 0.],

   [ 0., 0., 0., 0.],

   [ 0., 0., 0., 0.]])

NumPy提供一个类似arange的函数返回一个数列形式的数组

arange(10, 30, 5)

array([10, 15, 20, 25])

配合reshape可输出二维、三维数组等

b = arange(12).reshape(4,3)

2.基本运算

下面以点.开头的属于array的内置方法,以np.开头的属于函数。

2.1.求和 .sum() 
2.2.求最大值 .max() 
2.3.求最小值 .min() 
2.4.求平均值 .mean()

2.5.矩阵行求和 .sum(axis=1)

2.6.矩阵列求和 .sum(axis=0)

2.7.矩阵乘法

np.dot(a,b)

也可以a.dot(b),但不等于a*b,因为a*b是数组对应位置元素相乘。

2.8.元素求平方: a**2

每个元素平方

2.9.元素求e的n次幂: np.exp(test) 
元素开根号: np.sqrt(test)

2.10.向下取整: .floor()

2.11.平坦化数组: .ravel()

二维n行n列转换为一维数组

2.12.矩阵转置: .T

2.13.矩阵拼接按行(也就是竖方向拼接): np.vstack((a, b)) 
矩阵拼接按列(也就是横方向拼接): np.hstack((a, b))

2.14.矩阵分割按列: np.hsplit(a, 3) 和 np.hsplit(a, (3, 4))

2.15.矩阵分割按行: np.vsplit(a, 3) 和 np.vsplit(a, (3, 4))

3.复制

(1) 等号赋值:= 

a和b共享数据存储内存区域,因此修改其中任意一个数组的元素都会同时修改另外一个数组或矩阵的内容

(2) 浅复制: .view()

(3) 深复制: .copy()

4.索引、切片和迭代

a[3]

a[2:5]    #索引2到索引5的元素

a[::-1]   #reversed a

多维数组可以每个轴有一个索引。这些索引由一个逗号分割的元组给出。

a[2,3]

b[0:5,3]

迭代多维数组

for row in b:

    print row

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
NumPy一个功能强大的Python库,主要用于对多维数组执行计算。它的使用可以使代码更简洁,并且具有一些特性,如向量化操作,可以加速计算过程。在NumPy,最重要的数据结构是NumPy数组,它可以通过不同的方法进行创建。 创建一维NumPy数组的常见方法有以下几种: 1. 使用np.array()函数,传入一个列表作为参数,例如: my_array = np.array([1, 2, 3, 4, 5]) 2. 使用np.array()函数,传入一个元组作为参数,例如: my_array2 = np.array((0, 1, 2, 3, 4)) 3. 使用np.arange()函数,该函数类似于内置函数range(),返回一个数组而不是列表,例如: my_array3 = np.arange(5) 4. 使用np.linspace()函数,该函数返回一个包含指定数量元素数组,而不是指定步长(step),例如: my_array4 = np.linspace(0, 2*np.pi, 5) 这些方法可以用来创建不同类型的一维NumPy数组。通过打印数组可以查看创建的结果。在使用NumPy之前,需要导入NumPy库,可以使用import numpy as np语句进行导入。 NumPy还可以用于执行各种数学任务,如数值积分、微分、内插、外推等,以及快速处理图像等。因此,在机器学习NumPy常被用于存储训练数据和机器学习模型的参数,以及进行简单和快速的计算。 总结起来,NumPy提供了丰富的功能和优秀的库函数,使得在Python进行数值计算变得更加方便和高效。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [python科学计算的基本包-Python科学计算基本包Numpy使用的教程.pdf](https://download.csdn.net/download/qq_43934844/87898289)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [numpy基础语法整理](https://blog.csdn.net/weixin_61890283/article/details/124596265)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值