python numpy学习笔记

本文是关于Python numpy库的学习笔记,详细介绍了numpy的多维数组对象ndarray、数据类型、维度操作、创建数组、增删操作、随机数生成、数组运算、数学函数、索引切片、形状操作、反转、拼接、拆分、复制、排序和搜索功能,以及读写文件的方法,是Python科学计算的重要工具。
摘要由CSDN通过智能技术生成

numpy 的主要数据对象是 ndarray 多维数组,数组中包含相同类型的元素,通常是数值类型,每个元素都有一个索引。使用 numpy 前要导入包。

import numpy as np

类型

numpy 的数组被称为 ndarray (n维数组对象),它是一个数据容器,可以处理多维数组。

a = np.array([[1, 2, 3], [4, 5, 6]])
type(a)   # <class 'numpy.ndarray'>

dtype 属性可以获得元素的数据类型,也可以在创建时指定数据类型。

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

astype() 可以用于类型转化。

a.astype(np.float64)   # array([1., 2., 3., 4., 5.], dtype=float32)

如果把小数转化为浮点数,则小数部分则会被截取。

itemsize 属性可以获得元素的字节大小。

a.itemsize

numpy 常见的数据类型有以下几种。

类型 含义
bool 布尔类型,1 个字节,值为TrueFalse
int 正数类型,一般为int32int64
intc C里的int相同,一般为int32int64
intp 用于索引,一般为int32int64
int8 字节,范围 -128 ~ 127
int16 整数,范围 -32768 ~ 32767
int32 整数
int64 整数
unit8 无符号整数,范围 0 ~ 255
unit16 无符号整数
unit32 无符号整数
unit64 无符号整数
float float64缩写
float16 半精度浮点,5 位指数,10 位尾数
float32 单精度浮点,8 位指数,23 位尾数
float64 双精度浮点,11 位指数,52 位尾数
complex complex128缩写
complex64 复数,由两个 32 位浮点表示。
complex128 复数,由两个 64 位浮点表示。

维度

数据的维度称为轴(axes)。

[1, 2, 3]   # 一维数据,一个轴。长度为 3
[[1, 2, 3], [4, 5, 6]]   # 二维数据,二个轴。第一个维长度为 2,第二维长度为 3

ndim 属性可以获得数组的维度(轴)。

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

shape 属性不仅可以获得数组的维度,也可以获得每个维度的大小。

a.shape   # (2, 3)

size 属性获得数组元素的总个数。

a.size      # 6

data 属性可以获得数组的缓冲区。

轴可以用 moveaxis() 方法实现轴的移动。

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

swapaxes() 方法实现轴交换。

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

创建

array() 方法通过列表或元组创建数组,数据类型将自动推导得出,也可以指定类型。该方法会自动地将二维列表转化为二维数组,三维列表转化为三维数组。

a = np.array([1, 2, 3])
a.dtype   # dtype('int32')
b = np.array([1.1, 2.2, 3.3])
b.dtype   # dtype('float64')
c = np.array([[1, 2], [3, 4]], dtype=complex)
# array([[1.+0.j, 2.+0.j],
#        [3.+0.j, 4.+0.j]])

还有一些方法可以创建特殊的数组。zeros() 方法可以创建全 0 的数组。

np.zeros((2, 3))
# array([[0., 0., 0.],
#        [0., 0., 0.]])

ones() 方法可以创建一个全为 1 的数组。

np.ones((2, 3))
# array([[1., 1., 1.],
#        [1., 1., 1.]])

identity() 方法可以创建一个对角线上全为 1 的数组。

np.identity(3)
# array([[1., 0., 0.], 
#        [0., 1., 0.],
#        [0., 0., 1.]])

eye() 方法具有与 identity() 方法相似的功能,它创建一个 k 对角线元素上全为 1 的数组,其余元素全为 0。

np.eye(3)
# array([[1., 0., 0.],
       [0., 1., 0.],
       [0., 0., 1.]])
np.eye(3, 2)
# array([[1., 0.],
       [0., 1.],
       [0., 0.]])
np.eye(4, 3, 1)
# array([[0., 1., 0.],
       [0., 0., 1.],
       [0., 0., 0.],
       [0., 0., 0.]])
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值