010-NumpyTutorial

本文深入讲解Numpy库的核心概念,包括Ndarray对象的特性、数据类型及其对象(dtype)的使用,以及Numpy数组(ndarray)的各种属性。通过实例演示如何创建和操作Ndarray,介绍Numpy支持的丰富数据类型,帮助读者掌握高效数据处理技巧。

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

NumpyTutorial

1、Ndarray 对象

ndarray(N 维数组)对象是 Numpy 最重要的一个特点,它是一系列同类型数据的集合,以 0 下标为开始进行集合中元素的索引。

ndarray 对象是用于存放同类型元素的多维数组。
ndarray 中的每个元素在内存中都有相同存储大小的区域。

ndarray 内部由以下内容组成

  • 一个指向数据(内存或内存映射文件中的一块数据)的指针。
  • 数据类型或 dtype,描述在数组中的固定大小值的格子。
  • 一个表示数组形状(shape)的元组,表示各维度大小的元组。
  • 一个跨度元组(stride),其中的整数指的是为了前进到当前维度下一个元素需要"跨过"的字节数。

创建 ndarray:

  • 通过 array() 函数
    numpy.array
    numpy.array(object, dtype=None, copy=True, order='K', subok=False, ndmin=0)

object:array_like。数组对象;公放的数组接口对象;对象的__array__方法返回的一个数组;或任何(嵌套的)序列。
 
dtype:data-type, optional。数组所需的数据类型。如果没有给出,那么类型将被确定为在序列中保存对象所需的最小类型。此参数只能用于“向上转换”数组。对于向下类型转换,使用 .astype(t) 方法。
 
copy:bool, optional。如果为 true (默认),则复制该对象。否则,只有在 array 返回一个副本、obj 是嵌套序列或者需要一个副本来满足任何其他需求 (dtype、order等) 时,才会进行复制。
 
order:{‘K’, ‘A’, ‘C’, ‘F’}, optional。指定数组的内存布局。如果对象不是数组,则新创建的数组将以C顺序(row major)出现,除非指定了“F”,在这种情况下,它将以Fortran顺序(column major)出现。如果对象是一个数组,则如下所示:

orderno copycopy=True
KunchangedF & C order preserved, otherwise most similar order
AunchangedF order if input is F and not C, otherwise C order
CC orderC order
FF orderF order

subok : bool, optional。如果为 True,那么子类将被传递,否则返回的数组将被强制为基类数组(默认)。
 
ndmin : int, optional。指定结果数组应该具有的最小维数。一个将预先垂到形状需要满足这一要求。

import numpy as np 
np.array([1,2,3]) 
结果:array([1, 2, 3])
np.array([[1,2], [3,4]])
结果:array([[1, 2],
       		[3, 4]])
np.array([1,2,3], dtype = complex)
结果:array([1.+0.j, 2.+0.j, 3.+0.j])
  • 通过 ndarray() 函数
    numpy.ndarray
    numpy.ndarray(shape, dtype=float, buffer=None, offset=0, strides=None, order=None)
    创建一个固定大小的同构数据多维数组。

shape:tuple of ints。数组形状。
 
dtype:data-type, optional。任何可以解释为 numpy 数据类型的对象。
 
buffer:object exposing buffer interface, optional。填充数组的数据。
 
offset:int, optional。缓冲区中数组数据的偏移量。。
 
strides:tuple of ints, optional。内存中数据的跨步。
 
order:{‘C’, ‘F’}, optional。Row-major (C-style) or column-major (Fortran-style) order。

  • 通过其他函数

2、Numpy 数据类型

numpy 支持的数据类型比 Python 内置的类型要多很多,基本上可以和 C 语言的数据类型对应上,其中部分类型对应为 Python 内置的类型。
https://docs.scipy.org/doc/numpy/user/basics.types.html

2.1 基本类型

下表列举了常用 NumPy 基本类型。

名称描述
bool_布尔型数据类型(True 或者 False)
int_默认的整数类型(类似于 C 语言中的 long,int32 或 int64)
intc与 C 的 int 类型一样,一般是 int32 或 int 64
intp用于索引的整数类型(类似于 C 的 ssize_t,一般情况下仍然是 int32 或 int64)
int8字节(-128 to 127)
int16整数(-32768 to 32767)
int32整数(-2147483648 to 2147483647)
int64整数(-9223372036854775808 to 9223372036854775807)
uint8无符号整数(0 to 255)
uint16无符号整数(0 to 65535)
uint32无符号整数(0 to 4294967295)
uint64无符号整数(0 to 18446744073709551615)
float_float64 类型的简写
float16半精度浮点数,包括:1 个符号位,5 个指数位,10 个尾数位
float32单精度浮点数,包括:1 个符号位,8 个指数位,23 个尾数位
float64双精度浮点数,包括:1 个符号位,11 个指数位,52 个尾数位
complex_complex128 类型的简写,即 128 位复数
complex64复数,表示双 32 位浮点数(实数部分和虚数部分)
complex128复数,表示双 64 位浮点数(实数部分和虚数部分)

Numpy 有 5 种基本的数字类型:布尔值(bool)、整数(int)、无符号整数(uint)、浮点数(float)、复数(complex)。名称中带有数字的部分表示类型的位大小(即在内存中表示一个值需要多少位)。如 int32、int64。

2.2 数据类型对象 (dtype)

数据类型对象:描述数组中元素类型的对象。是用来描述与数组对应的内存区域如何使用,这包括如下几个方面:

  • 数据的类型(整数,浮点数或者 Python 对象 name)
  • 数据的大小(例如, 整数使用多少个字节存储 itemsize)
  • 数据的字节顺序(小端法或大端法 byteorder)

说明:int8, int16, int32, int64 四种数据类型可以使用字符串 ‘i1’, ‘i2’,‘i4’,‘i8’ 代替

In :np.dtype('i4')
Out:dtype('int32')

In :np.dtype('int32')
Out:dtype('int32')

In :np.dtype([('username',np.int16)])
Out:dtype([('username', '<i2')])

注意:与数组属性区分开 ndarray.dtype。

3、Numpy 数组(ndarray)属性

属性说明
ndarray.ndim秩,即轴的数量或维度的数量
ndarray.shape数组的维度,对于矩阵,n 行 m 列
AABB
AABB
AABB
AABB
AABB
AABB
AABB
AABB

ndarray.size 数组元素的总个数,相当于 .shape 中 n*m 的值
ndarray.dtype ndarray 对象的元素类型
ndarray.itemsize ndarray 对象中每个元素的大小,以字节为单位
ndarray.flags ndarray 对象的内存信息
ndarray.real ndarray元素的实部
ndarray.imag ndarray 元素的虚部
ndarray.data 包含实际数组元素的缓冲区,由于一般通过数组的索引获取元素,所以通常不需要使用这个属性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值