对 Numpy 认识

本文详细介绍了Numpy库,强调了其在数据科学计算中的重要性。从数组创建、属性、数据元素类型到特殊函数创建数组,如arange、linspace、logspace等,以及固定值和随机值数组的生成。还涵盖了数组索引、形状变换,包括reshape、flatten和ravel函数的使用。Numpy的同质性和内存效率使其成为处理大型矩阵的理想选择。
摘要由CSDN通过智能技术生成
一、对 Numpy 认识

Numpy 是用于数据科学计算的基础,不但能够完成科学计算任务,还能被用作高效地多 维数据容器。用于存储和处理大型矩阵

Python 提供了一个 array 模块,和 list 不同,它直接保存数值,但是由于 Python 的 array 模块不支持多维,也没有各种运算函数

Numpy 弥补了这一遗憾,Numpy 提供了一种数组对象—ndarray(下文统称数组)

关于 ndarray 数组对象的认识:

是一种内存连续的、存储单一数据类型的、可以存储多维数组的对象

存在两种存储方式:

C 风格存储(C 语言风格) ----行优先存储

F 风格存储(Fortran 语言风格)—列优先存储

二、数组创建

1、Numpy.array 函数创建一维或多维数组

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

参数名称 说明
object 接收 array,表示想要创建的数组,无默认
dtype 接收 data-type。表示数组所需的数据类型。如果未给定,则选择保存对象 所需的最小类型。默认为 None
ndmin 接收 int,指定生成数组应该具有的最小维数,默认为 None
三、数组属性

Ndarray 是一个数组对象,对象都拥有以下属性:

属性 说明
ndim 返回 int,表示数组的维数
shape 返回 tuple。表示数组的尺寸,对于 n 行 m 列的矩阵,形状为(n,m)
size 返回 int,表示数组的元素总数,等于数组形状的乘积
dtype 返回 data-type,描述数组中元素的类型
itemsize 返回 int,表示数组的每个元素的大小(以字节为单位)

其中 shape 及 ndim 属性,可以参考下图来理解:

代码实现:

# 1、导包
import numpy as np

# 2、创建数组
# 可以使用np.array将列表对象转化ndarray数组对象
# arr = np.array([1, 2, 3, 4])
# print('arr:\n', arr)  # [1 2 3 4]
# print('arr 类型:\n', type(arr))  # <class 'numpy.ndarray'>

#
arr = np.array([[1, 2, 3, 4], [5, 6, 7, 0]])
print('arr:\n', arr)
#  [[1 2 3 4]
#  [5 6 7 8]]

print('arr 类型:\n', type(arr))  # <class 'numpy.ndarray'>
print('*' * 100)

# arr = np.array([[[1, 2, 3, 4], [5, 6, 7, 0]],[[1, 2, 3, 4], [5, 6, 7, 0]]])
# print('arr:\n', arr)
# #  [[1 2 3 4]
# #  [5 6 7 8]]
#
# print('arr 类型:\n', type(arr))  # <class 'numpy.ndarray'>
# # print('*' * 100)

# 3、研究数组对象属性
# ndim shape size dtype itemsize
print('arr 的 ndim属性:', arr.ndim)  # 数组的维度
print('arr 的 shape属性:', arr.shape) # 数组的形状,元组类型
print('arr 的 size 属性:', arr.size)  # 数组中元素的个数
# print('arr 的 dtype 属性:', arr.dtype)  # 数组中元素的数据类型 int32 --->numpy中的数据类型 --->32位平台的int类型
# print('arr 的 itemsize 属性:', arr.itemsize) # 每一个元素的占位大小,单位为字节


# ndim  shape  size
# len(shape) = ndim
# size = shape中元素的乘积
四、数据元素类型

在实际业务数据处理时,为了更精确的计算结果,需要使用不同的数据类型,Numpy 极大程度地扩充了原生python数据类型,其中大部分数据类型是以数字结尾的,这个数字表 示在内存中占有的位数,同时强调一点,在Numpy中,所有数据类型都是同质的,即数组中的所有元素类型必须是一致的,这样做的好处是,更容易确定该数组所需要的存储空间

如下表展示:

类型 描述
bool 用一位存储的布尔类型(值为 TRUE 或 FALSE)
inti 由所在平台决定其精度的整数(一般为 int32 或 int64)
int8 整数,范围为−128 至 127
int16 整数,范围为−32768 至 32767

对于数组元素类型的使用,可以在创建数组的时候,通过 dtype 参数来指定数组的元素 类型,如:在创建全部为 0,全部为 1 的数组的时候,就可以使用 dtype 参数

其实,numpy 中的数据类型也可以进行强制转换,也可以进行存储复合的数据,如:

import numpy as np

# numpy中的数据类型
# ---封装了Python中的数据类型,并进行了细致划分 ---->变为了numpy.数据类型
# np.int32  np.int64  np.float32 np.float64 .......

# (1) 可以在创建数组的 时候通过dtype参数来指定创建的数组的类型
arr = np.array([1, 2, 3, 4], dtype=np.float64)
print('arr:\n', arr)
print('arr 类型:\n', type(arr))
print('arr 的元素的类型:\n', arr.dtype)

arr = np.array([1, 2, 3, 4], dtype=np.int64)
print('arr:\n', arr)
print('arr 类型:\n', type(arr))
print('arr 的元素的类型:\n', arr.dtype)

# 创建一个bool数组
# 注意:0代表False   非0代表True
arr = np.array([1, 2, 3, 0], dtype=np.bool)
print('arr:\n', arr)  # [ True  True  True False]
print('arr 类型:\n', type(arr))
print('arr 的元素的类型:\n', arr.dtype)

# (2) 也可以进行数据的强转换
print('将数值转化为bool类型:',np.bool(1))
print('将整型数据转化为float类型:',np.float32(3))
# print('将字符串a转化为float类型:',np.float64('a')) # 错误的
print('将字符串10转化为float类型:',np.float64('10'))

# # (3)了解、知道:ndarray可以存储不同类型的数据 --->转化 ---对象类型
# # 存储 ---个人信息---姓名(str) height(float) weight(float)
# # 通过自定义dtype来实现
df = np.dtype([('name', np.str, 20), (
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值