Python.numpy极简入门

本文介绍了Python的Numpy库,包括Numpy的功能、ndarray对象的创建、形状操作和元素类型指定,以及ufunc对象的使用,如sin()、add(),并详细解释了ufunc的广播机制和ogrid对象的应用。通过实例展示了Numpy如何提高数组运算的性能。
摘要由CSDN通过智能技术生成

Numpy库一直在用,但从没有去了解过numpy到底是个什么东西,属于知其然但不知其所以然的境界,虽然也没什么大碍,但今天看到某本书里有介绍,看了一下,觉得还不错,可以算是个简单入门吧,所以依照书上的框架复述一遍,写了这篇博文。

目录

1. Numpy简介

2. ndarray对象

2.1 数组的创建

2.2 数组的形状获取和改变

2.3 数组元素类型的指定

3. ufunc对象

3.1 ufunc示例-sin()

3.2 性能比较

3.3 ufunc示例-add()

3.4 ufunc的广播机制

3.5 ogrid对象


1. Numpy简介

Numpy为Python带来了多维数组功能,并提供丰富的函数库来处理这些数组。他将常用的数学函数进行了数组化,使得这些数学函数能够直接对数组进行操作,将本来需要在Python级别进行的循环,放到C语言的运算中,明显的提高了程序的运行速度。这点是很重要的,因为Python最大的每种不足就是性能问题。

在Python中自带有list(列表)对象,用来保存一组“值”,我们可以将list近似的当作数组来使用,但是列表中的元素可以是任何对象,比如['a',0.01,{"age":18}],因此列表中所保存的是对象的指针,这样为了保存一个简单的[1,2,3],需要3个指针和三个整数对象,在时间和空间上都造成了极大浪费。

为了克服list的弊端,就可以使用Numpy库所带来的数组。

Numpy库提供了两种基本的对象,一是ndarray(N-dimensional array object)是存储单一数据类型的多维数组二是ufunc(universal function object)是能够对数组进行处理的函数

2. ndarray对象

2.1 数组的创建

通过给array函数传递Python的序列对象来创建数组,如果传递的是多层嵌套序列,将创建多维数组。示例如下:

import numpy as np

a = np.array( [1,2,3,4] )
b = np.array( (5,6,7,8) )
c = np.array( [[1,2,3,4],[4,5,6,7],[7,8,9,10]] )

print(a) #[1 2 3 4]
print(b)  #[5 6 7 8]
print(c)
'''
[[ 1  2  3  4]
 [ 4  5  6  7]
 [ 7  8  9 10]]
'''

2.2 数组的形状获取和改变

数组的大小可以通过数组的shape属性获得。示例如下:

#紧接上面的代码
print(a.shape) #(4,)
print(c.shape) #(3, 4)

数组a的shape只有一个元素,因此可以判定为一维数组,而数组c的第0轴长度为3,第1轴的长度为4,是3*4的数组。

可以通过修改数组的shape属性,在保持元素个数不变的情况下,改变数组每个轴的长度。相当于做了重排。

c.shape=4,3
print(c)
'''
[[ 1  2  3]
 [ 4  4  5]
 [ 6  7  7]
 [ 8  9 10]]
'''

当某个轴的元素为-1时,将根据元素的个数自动计算此轴的长度,因此下面的程序将c的shape

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值