文本大数据之NumPy基础

本文介绍了NumPy的基础知识,包括NumPy对象、数据类型、数组属性及创建数组的方法,如numpy.empty、numpy.zeros、numpy.ones、numpy.eye等。NumPy是Python科学计算库,用于处理多维数据,广泛应用于数据科学、深度学习等领域。

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

初识Nmupy

NumPy是一个开源的Python科学计算库。它的主要功能之一是用来操作数组和矩阵;是科学计算、深度学习等高端领域的必备工具;使用TensorFlow、Caffe框架训练神经网络模型时,需要进行大量复杂的运算,可以直接调用NumPy里面的API。NumPy还包含了很多使用的数学函数,覆盖了很多的数学领域,比如线性代数、傅里叶变换、随机数生成。

NumPy基础

NumPy对象

在NumPy里,ndarray是整个numpy的基础,ndarray是N-dimensional array的缩写,是一种由同质元素组成的多维数组。元素数量是事先准备好的,同质指的是所有的元素类型一致。
它描述相同类型的元素集合。 可以使用基于零的索引访问集合中的项目。
ndarray中的每个元素在内存中使用相同大小的块。
ndarray中的每个元素是数据类型对象的对象(称为 dtype)。
从ndarray对象提取的任何元素(通过切片)由一个数组标量类型的 Python 对象表示。
基本的Nmupy中的数组函数创建的如下:

numpy.array

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

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

示例代码

import numpy as py

a = [1,2,3,4,5,6,7,8,9]
print(a)
#结果如下
#[1,2,3,4,5,6,7,8,9]

a * 2
#结果如下
#[1,2,3,4,5,6,7,8,9,1,2,3,4,5,6,7,8,9]

print(type(a)
#结果如下
#<class 'list>
#把普通python中的list转换成ndarray
A = np.array(a)
print(A)
A
#print(A)结果如下
#[1,2,3,4,5,6,7,8,9]
#A结果如下
#array([1,2,3,4,5,6,7,8,9])

print(type(A))
#结果如下
#<class 'numpy.ndarray'>

A * 2
#结果如下
#array([2,4,6,8,10,12,14,16,18])
#直接创建一维数组
b = np.array([1,2,3,4,5])
print(b)
print(type(b))
#print(b)结果如下
#[1 2 3 4 5]
#print(type(b))结果如下
#<class 'numpy.ndarray'>

b * 6
#结果如下
#array([6,12,18,24,30])

NumPy数据类型

ndarray数据类型由一个叫dtype的numpy对象指定,每个ndarray只有一种dtype类型。数据类型对象描述了对应于数组的固定内存块的解释,取决于以下方面:

1.数据类型(整数、浮点或者 Python 对象)
2.数据大小
3.字节序(小端或大端)
4.在结构化类型的情况下,字段的名称,每个字段的数据类型,和每个字段占用的内存块部分。
5.如果数据类型是子序列,它的形状和数据类型。

字节顺序取决于数据类型的前缀<或>。<意味着编码是小端(最小有效字节存储在最小地址中)。>意味着编码是大端(最大有效字节存储在最小地址中)。

NumPy数组属性

属性描述
ndarry.shape这一数组属性返回一个包含数组维度的元组,它也可以用于调整数组大小
ndarray.ndim这一数组属性返回数组的维数
ndarray.itemsize数组中每个元素的字节大小
ndarray.size数组元素的总个数
ndarray.dtype数组元素的数据类型,dtype类型可以用于创建数组中
ndarray.data包含实际数组元素的缓冲区地址
ndarray.flat数组元素的迭代器

数组的维数和
示例1如下

import numpy as np
a = np.array([[1,2,3],[4,5,6]])
print(a.shape)

输出如下:

(2,3)

示例2如下

import numpy as np
a = np.array([[1,2,3],[4,5,6]])
a.shape = (3,2)
print(a.shape)

输出如下:

[[1 2]
 [3 4]
 [5 6]]

示例3.1如下

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

输出如下:

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

示例3.2如下

a.shape = (4,3)
print(a)

输出如下:

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

注意:从(3,4)改为(4,3)并不是对数组进行转置,而是改变每个轴的大小,数组元素在内存中的位置并没有改变。
示例3.3如下

a.shape = 2,-1
print(a)

输出如下:

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

注意:当某个轴的元素为-1时,将根据数组元素的个数自动计算此轴的长度。

示例3.4如下

b = a.reshape(6,2)
print(b)

输出如下:

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

注意:使用数组的reshape方法,可以创建一个改变了尺寸的新数组,原数组的shape保持不变。

NumPy创建数组

numpy.empty

它创建指定形状和dtype的未初始化数组。 它使用以下构造函数:

numpy.empty(shape, dtype = float, order = 'C')

构造器接受下列参数:

参数描述
shape空数组的形状,整数或整数元祖
dtype所需的数组类型,可选
order'C’为按行的C风格数组,'F’为按列的Fortran风格数组

示例4.1如下

#numpy.empty以随机的方式来创建数组
import numpy as np
c = np.empty([3,2], dtype=np.int32)
print(c)

输出如下:

#数组元素为随机值,因为它们未初始化
[[-1127970928         472]
 [          0           0]
 [          1 -2147483648]]

numpy.zeros

返回特定大小,以 0 填充的新数组

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

构造器接受下列参数:

参数描述
shape空数组的形状,整数或整数元祖
dtype所需的数组类型,可选
order'C’为按行的C风格数组,'F’为按列的Fortran风格数组

示例4.2.1如下

#numpy.zeros返回指定的数组大小,并且以0作为填充
d = np.zeros([5,6],dtype=np.float32)
print(d)

输出如下:

[[0. 0. 0. 0. 0. 0.]
 [0. 0. 0. 0. 0. 0.]
 [0. 0. 0. 0. 0. 0.]
 [0. 0. 0. 0. 0. 0.]
 [0. 0. 0. 0. 0. 0.]]

示例4.2.2如下

#numpy.zeros返回指定的数组大小,并且以0作为填充,默认类型
d = np.zeros([5,6],dtype=np.int32)
print(d)

输出如下:

[[0 0 0 0 0 0]
 [0 0 0 0 0 0]
 [0 0 0 0 0 0]
 [0 0 0 0 0 0]
 [0 0 0 0 0 0]]

numpy.zeros_like

示例4.3.1如下

e = np.array([[1,2,3],[4,5,6]],dtype=np.float32)
print(e)

输出如下:

[[1. 2. 3.]
 [4. 5. 6.]]

示例4.3.2如下

f = np.zeros_like(e)
print(f)

输出如下:

[[0. 0. 0.]
 [0. 0. 0.]]

示例4.3.3如下

g = np.zeros_like(c)
print(g)

输出如下:

[[0 0]
 [0 0]
 [0 0]]

numpy.ones & numpy.ones_like

示例4.4如下

h = np.ones_like(e)
print(h)

输出如下:

[[1. 1. 1.]
 [1. 1. 1.]]

numpy.eye

返回对角线为1,其余为0的数组
示例4.5.1如下

j = np.eye(5)
print(j)

输出如下:

[[1. 0. 0. 0. 0.]
 [0. 1. 0. 0. 0.]
 [0. 0. 1. 0. 0.]
 [0. 0. 0. 1. 0.]
 [0. 0. 0. 0. 1.]]

示例4.5.2如下

k = np.eye(5,dtype=np.int32)
print(k)

输出如下:

[[1 0 0 0 0]
 [0 1 0 0 0]
 [0 0 1 0 0]
 [0 0 0 1 0]
 [0 0 0 0 1]]

NumPy现有数据创建数组

numpy.asarray

numpy.asarray(a, dtype = None, order = None)

示例5.1.1如下

# 将列表转换为 ndarray 
import numpy as np 

x =  [1,2,3] 
a = np.asarray(x)  
print(a)

输出如下:

[1 2 3]

示例5.1.2如下

# 设置了dtype
import numpy as np 

x =  [1,2,3] 
a = np.asarray(x, dtype = float)  
print(a)

输出如下:

[1. 2. 3.]

示例5.1.3如下

# 来自元组的 ndarray  
import numpy as np 

x =  (1,2,3)
a = np.asarray(x)  
print(a)

输出如下:

[1 2 3]

示例5.1.4如下

# 来自元组列表的 ndarray  
import numpy as np 

x =  [(1,2,3),(4,5)] 
a = np.asarray(x)  
print(a)

输出如下:

[(1, 2, 3) (4, 5)]

numpy.arange

类似于python的range函数,通过指定开始值、终值和步长来创建一维数组,注意数组不包括终值

numpy.linspace

指定开始值、终值和元素个数来创建一维数组,可以通过endpoint关键字指定是否包含终值,缺省设置是包括终值。

numpy.logspace

numpy.linspace类似,但是numpy.logspace创建等比数列

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值