Autoleader算法组—numpy学习笔记

NumPy是Python的数值计算扩展,提供高效处理大型矩阵的能力。使用包括引入库、创建数组、排序元素、切片索引、数组形状、广播及基本阵列操作等步骤。例如,创建数组用np.array(),排序用np.sort(),广播允许不同形状的数组计算,而加减乘除和sum函数则支持基本的数学运算。

一、Numpy是什么?

NumPy(Numerical Python)是Python的一种开源的数值计算扩展。这种工具可用来存储和处理大型矩阵,比Python自身的嵌套列表结构要高效的多(该结构也可以用来表示矩阵(matrix)),支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。

二、使用步骤

1.引入库

代码如下(示例):

import numpy as np

2.创建数组

要创建 NumPy 数组,可以使用函数 np.array()

import numpy as np
a = np.array([1,2,3])

从已有数组创建数组

x =  [1,2,3] 
a = np.asarray(x)  
#[1 2 3]

创建包含一系列均匀间隔的数组。将指定第一个数字、最后一个数字和步长。

np.arange(2,9,2)
#[2 4 6 8]

3.排序元素

排序元素可以使用函数np.sort()
numpy.sort(a, axis=-1, kind=None, order=None)

arr = np.array([2,1,4,3,7,5,6,89])
np.sort(arr)
#[1 2 3 4 5 6 7 8 9]

排序元素还可用到其他函数:
argsort,它是沿指定轴的间接排序,
lexsort,它是对多个键的间接稳定排序,
searchsorted,它将在排序数组中查找元素,以及分区,这是一种部分排序。

连接多个个数组可以用到np.concatenate()函数
numpy.concatenate((a1, a2, …), axis=0, out=None, dtype=None,casting=“same_kind”

a = np.array([1,2,3])
b = np.array([4,5,6])
np.concatenate((a, b))
#[1 2 3 4 5 6])

或者将数组连接起来

m = np.array([[1,2], [3,4]])
n = np.array([[5,6]])
np.concatenate((m,n), axis=0)
#array([[1, 2],
#       [3, 4],
#       [5, 6]])

4.切片与索引

ndarray对象的内容可以通过索引或切片来访问和修改,与 Python 中列表的切片操作一样。下标从0-n。
切片对象可以通过内置的 slice 函数,并设置 start, stop 及 step 参数进行,从原数组中切割出一个新数组。

a = np.arange(10)
s = slice(2,7,2)   #从索引2开始到索引7停止,间隔为2
print (a[s])
#[2 4 6]

也可通过冒号切割进行切片

a = np.arange(10)  
b = a[2:7:2]   #从索引2开始到索引7停止,间隔为2
print(b)
#[2 4 6]

以下获取(0,0)(1,1)处的元素

x = np.array([[1,2],[3,4]]) 
y = x[[0,1],  [0,1]]  
#[1 4]

5.数组形状

ndarray.ndim 将显示数组的轴数或尺寸。

a = np.arange(24) 
a.ndim
#1

ndarray.size 将显示数组的元素总数。这是数组形状元素的乘积。

a = np.array([[1,2,3],[4,5,6]])  
a.side
#6

ndarray.shape将显示一个整数元组,指示沿数组的每个维度存储的元素数。例如,如果您有一个包含 2 行和 3 列的二维数组,则数组的形状为 。(2, 3)

a = np.array([[1,2,3],[4,5,6]])  
a.shape
#(2,3)

6.广播

广播(Broadcast)是 numpy 对不同形状(shape)的数组进行数值计算的方式, 对数组的算术运算通常在相应的元素上进行。
如果两个数组 a 和 b 形状相同,即满足 a.shape == b.shape,那么 a*b 的结果就是 a 与 b 数组对应位相乘。这要求维数相同,且各维度的长度相同。

a = np.array([1,2,3,4]) 
b = np.array([1,2,3,4]) 
c = a*b 
#[1 4 9 16]

当运算中的 2 个数组的形状不同时,numpy 将自动触发广播机制。

a = np.array([[ 0, 0, 0],
           [1,1,1],
           [2,2,2],
           [3,3,3]])
b = np.array([0,1,2])
print(a+b)
#[[0 1 2]
# [1 2 3]
# [2 3 4]
# [3 4 5]]

7.基本阵列操作

加法

data = np.array([1,2])
ones = np.ones(2,dtype=int)
data + ones
#[2 3]

减法

data = np.array([1,2])
ones = np.ones(2,dtype=int)
data - ones
#[0 1]

乘法

data = np.array([1,2])
ones = np.ones(2,dtype=int)
data * data
#[0 2]

除法

data = np.array([1,2])
ones = np.ones(2,dtype=int)
data / data
#[1. 1.]

求和sum函数
对行轴求和

b = np.array([[1, 1], [2, 2]])
b.sum(axis=0)
#[3 3]

对列轴求和

b.sum(axis=1)
#[2 4]
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值