Numpy学习笔记1——创建数组和ndarray的类型

numpy基础数据结构

numpy数组是一个多维数组对象,称为ndarray,由两部分组成:

  • ①实际的数据
  • ②描述这些数据的元数据
# 多维数组ndarray
import numpy as np
ar = np.array([[1, 2, 3, 4, 5, 6, 7], [2, 3, 4, 5, 6, 7, 8]])
print(ar)
  • 输出的数据有中括号包括,但是每个元素之间没有逗号(python列表中间有逗号分隔)
# 数组的一些基本属性
print(ar.ndim)  # ndim方法可以显示数组的 维度数量(rank)
print(ar.shape)  # shape方法可以显示数组是n行m列的数据,(n, m)
print(ar.size)  # size方法显示数组内元素的个数
print(ar.itemsize)  # itemsize方法显示数组中每个元素的字节大小,int32类型的字节是4字节,int64类型的字节数是8字节
print(ar.dtype)  # 显示数组中元素的类型,类似于python中的type()函数
print(ar.data)   # 显示实际数组元素的缓冲区 
  • 数组的维度称为秩(rank),一维数组的秩为1,二维数组的秩为2…

数组的创建

  • ①array()函数,括号内可以是:
    • 列表
    • 元组
    • 数组
    • 生成器

第一种方式:numpy.array()

ar1 = np.array(range(10))  # 生成器创建数组,整型
ar2 = np.array([1, 2, 4, 3.14, 5, 6])  # 列表创建数组,浮点型
ar3 = np.array([[1, 2, 3], ("a", "b", "c")])  # 元组创建数组
ar4 = np,array([[1, 2, 3], ("a", "b", "c", "d")])  # 序列数量不相同,不是二维数组,是一维数组
print(ar4.ndim)  # 显示ar4为一维数组
print(ar4.size)  # 显示元素个数为2

第二种方式:numpy.arange()

# 创建数组:arange(),效果类似于range(),在给定间隔内返回均匀间隔的值
print(np.arange(10))  # 生成0-9的序列,整型
print(np.arange(10.0))  # 生成0.0-9.0的浮点型序列
print(np.arange(5, 12))  # 生成5-11的序列
print(np.arange(5.0, 12, 2))  # 返回5.0-11.0,步长为2

第三种方法:numpy.linspace()

# 创建数组:linspace():返回在间隔[开始, 结束]上计算的num个均匀间隔的样本
ar1 = np.linspace(2.0, 3.0, num=5)
ar2 = np.linspace(2.0, 3.0, num=5, endpoint=False)  # endpoint参数如果为真,那么就包含最后一个元素,否则不包括,默认值为True
ar3 = np.linspace(2.0, 3.0, num=5, retstep=True)  # retstep为True,返回的是一个元组,第一个是数组,第二个是步长

创建特殊数组的方法

# 创建数组:zeros()/zeros_like()/ones()/ones_like()
ar1 = zeros((5, 6))  # 生成一个5行6列全为0的数组
# numpy.zeros(shape, dtype, order="C")
# 生成一个几行几列的数组,元素全部用0填充
# shape:数组维数
# dtype:数组类型,默认为float64
# order:是否在存储器中以C或Fortran连续(按行或列方式)存储多维数据
ar2 = np.array([list(range(5)), list(range(5, 10))])
ar3 = np.zeros_like(ar2)  # 返回具有与给定数组相同形状和类型的0数组,这里的ar3是根据ar2的形状和类型创建的一个全为0的数组
ar4 = np.ones((5, 6))  # 生成一个5行6列的全为1的数组
ar5 = np.ones_like(ar2)  # 生成一个根据ar2的形状和类型创建的一个全为1的数组

# 创建数组:eye()
print(np.eye(5))  # 创建一个5行5列的单位矩阵,对角线的值都为1,其余为0

ndarray的数据类型

bool 用一个字节存储的布尔类型(True或False)

int 由所在平台决定其大小的整数(一般为int32或int64)

int8 一个字节大小,-128 至 127

int16 整数,-32768 至 32767

int32 整数,-2 ** 31 至 2 ** 32 -1

int64 整数,-2 ** 63 至 2 ** 63 - 1

uint8 无符号整数,0 至 255

uint16 无符号整数,0 至 65535

uint32 无符号整数,0 至 2 ** 32 - 1

uint64 无符号整数,0 至 2 ** 64 - 1

float16 半精度浮点数:16位,正负号1位,指数5位,精度10位

float32 单精度浮点数:32位,正负号1位,指数8位,精度23位

float64或float 双精度浮点数:64位,正负号1位,指数11位,精度52位

complex64 复数,分别用两个32位浮点数表示实部和虚部

complex128或complex 复数,分别用两个64位浮点数表示实部和虚部

作业

# 作业1:分别按照要求,生成一个一维数组、二维数组,并且查看其shape
ar1 = np.array([1, 2, "a", "hello", [1, 2, 3], {"two": 200, "one": 100}])
print(ar1)
print(ar1.shape)
ar2 = np.array([['0', '1', '2', '3', '4', '5'], ['a', 'b', 'c', 'd', 'e', 'f'], ['True', 'False', 'True', 'False', 'True', 'True']])
print(ar2)
print(ar2.shape)

# 作业2:生成一个一维数组,起始值为5,终点值为15,样本数为10个
ar1 = np.linspace(5, 15, num=10)

# 作业3:按照要求创建以下数组
# 1.创建一个四行四列的全为0的数组
ar1 = np.zeros((4, 4))
# 2.创建一个两行三列的全为1的数组
ar2 = np,ones((2, 3))
# 3.创建一个三行三列的单位矩阵
ar3 = np,eye(3)
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值