01.Numpy数组对象

本文介绍了Python中NumPy库的重要性,解释了为何标准Python列表和array模块不足以满足数值运算需求,以及NumPy如何通过其核心对象ndarray和ufunc解决这些问题。详细讲解了ndarray的内存描述及创建方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

为什么要有 numpy

  1. 标准安装的 Python 中用列表 (list) 保存一组值,可以用来当作数组使用,不过由于列表的元素可以是任何对象,因此列表中所保存的是对象的指针。这样为了保存一个简单的[1,2,3],需要有3个指针三个整数对象。对于数值运算来说这种结构显然比较浪费内存和CPU计算时间。
  2. 此外Python还提供了一个array模块,array对象和列表不同,它直接保存数值,和C语言一维数组比较类似。但是由于它不支持多维,也没有各种运算函数,因此也不适合做数值运算。
  3. NumPy的诞生弥补了这些不足,NumPy提供了两种基本的对象:ndarray(N-dimensional array object)和ufunc(universal function object)。ndarray(下文统一称之为数组)是存储单一数据类型的多维数组,而ufunc则是能够对数组进行处理的函数。

ndarray 简单的内存描述

ndarray中的每个元素是数据类型对象的对象(称为 dtype),并在内存中使用相同大小和区域连续的块。带有将每个元素映射到内存块中某个位置的索引方案。 内存块以按行(C 风格)或按列(FORTRANMatLab风格)的方式保存元素。

ndarray对象提取的任何元素(通过切片)由一个数组标量类型的 Python 对象表示。 下图显示了ndarray,数据类型对象(dtype)和数组标量类型之间的关系。

img

基本的ndarray是使用 NumPy 中的数组函数创建的,如下所示:

numpy.array(object, dtype=None, copy=True, order=None, subok=False, ndmin=0)

它从任何暴露数组接口的对象,或从返回数组的任何方法创建一个ndarray。

上面的构造器接受以下参数:

参数描述
object任何暴露数组接口方法的对象都会返回一个数组或任何(嵌套)序列。
dtype数组的所需数据类型,可选。
copy可选,默认为true,对象是否被复制。
orderC(按行)、F(按列)或A(任意,默认)。
subok默认情况下,返回的数组被强制为基类数组。 如果为true,则返回子类。
ndmin指定返回数组的最小维数。

看看下面的例子来更好地理解。

示例

>>> import numpy as np
>>> alist = list(range(4))
>>> andarray = np.array(alist)
>>> andarray
array([0, 1, 2, 3])
>>> alist = [[1, 2], [3, 4]]
>>> andarray = np.array(alist)
>>> andarray
array([[1, 2],
       [3, 4]])
>>> alist = list(range(4))
>>> andarray = np.array(alist, ndmin=2)
>>> andarray
array([[0, 1, 2, 3]])
>>> andarray = np.array(alist, dtype=np.complex)
>>> andarray
array([0.+0.j, 1.+0.j, 2.+0.j, 3.+0.j])

转载于:https://www.cnblogs.com/oneTOinf/p/10480194.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值