python哪些模块用于数据分析_Python数据分析——numpy模块

本文详细介绍Numpy库的基础知识,包括数组类型、数组生成方法、数组属性及其应用。涵盖列表、元组转换为数组,以及使用arange、linspace等方法创建数组的过程。

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

目录

概述

Numpy  数组类型

Numpy初探

Numpy数组生成

列表或元组转换

arange方法创建

linspace方法创建

ones方法创建

zeros方法创建

eye方法创建

从已知数据创建

ndarray数组属性

概述

Numpy是支持python语言的数值计算扩充库,其拥有强大的多维数组处理能力与矩阵运算能力。除此之外,Numpy还内建了大量的函数,方便快速构建数学模型。

主要内容:

数值类型及多维数组

数组操作及随机抽样

数学函数及代数运算

数组索引及其他用法

Numpy  数组类型

Numpy支持的数值类型细分如下:

0806e55cd72d37448bc82d4b085318f1.png

在 NumPy 中,上面的这些数值类型都被归于 `dtype(data-type)` 对象的实例。

我们可以用 `numpy.dtype(object, align, copy)` 来指定数值类型。而在数组里面,可以用 `dtype=` 参数。

Numpy初探

1,创建一维数组,并指定数据类型

import numpy as np # 导入 NumPy 模块

a = np.array([1.1, 2.2, 3.3], dtype=np.float64) # 指定 1 维数组的数值类型为 float64

# 查看 a 及 dtype 类型

print(a,a.dtype)

运行结果:

aa39a65cdf45da84995023129780a4b2.png

2,使用.astype()方法在不同的数值类型之间相互转换

a.astype(int).dtype # 将 a 的数值类型从 float64 转换为 int,并查看 dtype 类型

print(a.dtype)

运行结果:

25c7020306723a36bde605bd0b481252.png

Numpy数组生成

Numpy最核心、最重要的一个特性就是ndarray多维数组对象,拥有对高数组的处理能力

Numpy中,ndarray类具有六个参数,分别为:

1、shape:数组的形状

2、dtype:数据类型

3、buffer:对象暴露缓冲区接口

4、offset:数组数据的偏移量

5、strides:数据步长

6、order:{'C','F'},以行或列为主排序顺序

在Numpy中,主要通过以下几种途径创建数组,它们分别是:

1、从python数组结构列表,元组等转换

2、使用np.arange\np.ones\np.zeros等Numpy原生方法

3、从存储空间读取数据

4、通过使用字符串或者缓冲区从原始字节创建数组

列表或元组转换

在Numpy中,使用numpy.array将列表或者元组转换为ndarray数组。方法为:

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

其中的参数:

object:列表、元组等。

dtype:数据类型。如果未给出,则类型为被保存对象所需的最小类型。

copy:布尔类型,默认 True,表示复制对象。

order:顺序。

subok:布尔类型,表示子类是否被传递。

ndmin:生成的数组应具有的最小维数。

通过列表创建一个ndarray数组

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

print(a)

运行结果:

[[1 2 3]

[4 5 6]]

通过元组创建一个ndarray数组

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

print(b)

运行结果:

[[1 2]

[3 4]

[5 6]]

arange方法创建

arange()的功能是在给定区间内创建一系列均匀间隔的值,方法如下:

numpy.arange(start, stop, step, dtype=None)

参数设置为值所在的区间[开始,停止),这是一个半开半闭区间,然后设置步长用于设置值之间的间隔。最后选择dtype可以返回ndarray的值类型。

实例

# 在区间 [3, 7) 中以 0.5 为步长新建数组

a = np.arange(3, 7, 0.5, dtype='float32')

print(a,a.dtype)

运行结果:

[3. 3.5 4. 4.5 5. 5.5 6. 6.5] float32

linspace方法创建

linspace用于在指定的区间内返回间隔均匀的值,方法如下:

numpy.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)

参数为:

start:序列的起始值。

stop:序列的结束值。

num:生成的样本数。默认值为50。

endpoint:布尔值,如果为真,则最后一个样本包含在序列内。

retstep:布尔值,如果为真,返回间距。

dtype:数组的类型。

实例

a = np.linspace(0, 10, 10, endpoint=True)

print(a)

运行结果:

[ 0. 1.11111111 2.22222222 3.33333333 4.44444444 5.55555556

6.66666667 7.77777778 8.88888889 10. ]

若将endpoint参数改成False

a = np.linspace(0, 10, 10, endpoint=False)

print(a)

运行结果:

[0. 1. 2. 3. 4. 5. 6. 7. 8. 9.]

ones方法创建

numpy.ones用于快速创建数值全部为1的多维数组,方法如下:

numpy.ones(shape, dtype=None, order='C')

参数为:

shape:用于指定数组形状,例如(1, 2)或 3。

dtype:数据类型。

order:{'C','F'},按行或列方式储存数组。

实例

a = np.ones((2, 3))

print(a)

运行结果:

[[1. 1. 1.]

[1. 1. 1.]]

zeros方法创建

zeros方法和ones方法非常相似,不同的地方在于,这里全部填充为0,zeros方法和ones方法是一致的

numpy.zeros(shape, dtype=None, order='C')

参数:

shape:用于指定数组形状,例如(1, 2)或3。

dtype:数据类型。

order:{'C','F'},按行或列方式储存数组。

实例

a = np.zeros((3, 2))

print(a)

运行结果:

[[0. 0.]

[0. 0.]

[0. 0.]]

eye方法创建

numpy.eye用于创建一个二维数组,其特点是K对角线上的值为1,其余值全部为0。方法如下:

numpy.eye(N, M=None, k=0, dtype=)

参数:

N:输出数组的行数。

M:输出数组的列数。

k:对角线索引:0(默认)是指主对角线,正值是指上对角线,负值是指下对角线。

实例

a = np.eye(5, 4, 3)

print(a)

运行结果

[[0. 0. 0. 1.]

[0. 0. 0. 0.]

[0. 0. 0. 0.]

[0. 0. 0. 0.]

[0. 0. 0. 0.]]

从已知数据创建

Numpy提供了下面5个方法

frombuffer(buffer):将缓冲区转换为 1 维数组。

fromfile(file,dtype,count,sep):从文本或二进制文件中构建多维数组。

fromfunction(function,shape):通过函数返回值来创建多维数组。

fromiter(iterable,dtype,count):从可迭代对象创建 1 维数组。

fromstring(string,dtype,count,sep):从字符串中创建 1 维数组。

实例

a = np.fromfunction(lambda a, b: a + b, (5, 4))

print(a)

运行结果:

[[0. 1. 2. 3.]

[1. 2. 3. 4.]

[2. 3. 4. 5.]

[3. 4. 5. 6.]

[4. 5. 6. 7.]]

ndarray数组属性

创建一个二维数组并赋值

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

print(a) # 查看 a 的值

运行结果

[[1 2 3]

[4 5 6]

[7 8 9]]

ndarray.T用于数组的转置,与.transpase()相同

b = a.T

print(b)

运行结果

[[1 4 7]

[2 5 8]

[3 6 9]]

ndarray.dtype用来输出数组包含元素的数据类型

print(b.dtype)

运行结果

int64

ndarray.imag用于输出数组包含元素的虚部

print(b.imag)

运行结果

[[0 0 0]

[0 0 0]

[0 0 0]]

ndarray.real用来输出数组包含元素的实部

print(b.real)

运行结果

[[1 4 7]

[2 5 8]

[3 6 9]]

ndarray.size用来输出数组中的总包含元素数

print(b.size)

运行结果

9

ndarray.itemsize输出一个数组元素的字节数

print(b.itemsize)

运行结果:

8

ndarray.nbytes用来输出数组的元素总字节数

print(b.nbytes)

运行结果

72

ndarray.ndim用来输出数组尺寸

print(b.ndim)

运行结果

2

ndarray.shape用来输出数组维数组

print(b.shape)

运行结果

(3, 3)

ndarray.strides用来遍历数组时,输出每个维度中步进的字节数组

print(b.strides)

运行结果

(8, 24)

数组维度和形状

Numpy数组又被称为ndarray多维数组,那么n就可以从1维一次递增,如下图的1至3维的Nnmpy数组示例。

f30f5b0607093c90931d9d4f94eb5d6b.png

1维数组可以被看作数学中的向量,2维数组可以看作是矩阵,而3维数组则是一个数据立方

实例

one = np.array([7, 2, 9, 10])

two = np.array([[5.2, 3.0, 4.5],

[9.1, 0.1, 0.3]])

three = np.array([[[1, 1], [1, 1], [1, 1]],

[[1, 1], [1, 1], [1, 1]],

[[1, 1], [1, 1], [1, 1]],

[[1, 1], [1, 1], [1, 1]]])

print(one.shape,two.shape,three.shape)

运行结果

(4,) (2, 3) (4, 3, 2)

数组基本操作

重设形状

reshape可以在不改变数组数据的同时,改变数组的形状。其中numpy.shape()等效于ndarray.reshape()

numpy.reshape(a, newshape)

其中参数a表示原数组,newshape用于指定新的形状(整数或者元组)

a = np.arange(10).reshape((5, 2))

print(a)

运行结果

[[0 1]

[2 3]

[4 5]

[6 7]

[8 9]]

数组展开

ravel的目的是将任意形状的数组扁平化,变为1维数组,ravel方法如下:

numpy.ravel(a, order='C')

其中,a 表示需要处理的数组。order 表示变换时的读取顺序,默认是按照行依次读取,当 order='F' 时,可以按列依次读取排序。

a = np.arange(10).reshape((2, 5))

print(a)

b = np.ravel(a)

print(b)

c = np.ravel(a, order='F')

print(c)

运行结果

[[0 1 2 3 4]

[5 6 7 8 9]]

[0 1 2 3 4 5 6 7 8 9]

[0 5 1 6 2 7 3 8 4 9]

轴移动

未完待续~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值