python numpy 数组的创建和数据类型

本文介绍了如何使用numpy创建数组,并详细讲解了numpy的数据类型,包括整数、浮点数、布尔值、复数、字符串等。同时,还展示了如何自定义数据类型来存储商店库存信息,如商品名称、库存数量和价格。

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

一、创建

#语法:np.array()

#从code转markdown --esc–m
array(object, dtype=None, copy=True, order=‘K’, subok=False, ndmin=0)
object:转换的对象
dtype:数组的数据类型
copy:是否被复制
order:按照行(C)|列(F)排列
ndmin:多维

#结尾多打两个空格,下一行就会自动换行,可以省去‘\n’

# 导入模块
import numpy as np
# 创建一维数组
a=np.array([0,1,4])
# 创建多维数组
b=np.array([
    [1,2,3,4],
    [5,6,7,8]
])
# 创建整数类型的数组
c=np.array(range(6),dtype=int)
# 创建两个维度,数据类型是整数的数组
d=np.array(range(6),dtype=int,ndmin=2)#数据类型是整数,数据维度是2
# 输入的是几个维度,就自动生成几个维度的数组
f=np.array([range(6),range(6)],ndmin=0,dtype=float)  #ndim=0是按照输入的维度来算
#创建一个值均为0的2*2多维ndarray对象 
np.zeros((2,2))
#创建一个值均为1的1*2维ndarray对象
np.ones([1,2])
#创建一个值均为7的3*3维ndarray对象
np.full((3,3),7)
#创建一个4*4维对角矩阵
np.eye(4)
np.eye(4,k=1) #向后面移动一位

定义一个函数来看看数组的一些基本情况

def showArrayInfo(a):
    print(a)
    print('type',type(a))
    print('转置:\n',a.T)
    print('数组有几行几列:',a.shape)
    print('数组元素的数据类型:',a.dtype)
    print('数组的维度',a.ndim)#提示是tab键
    print('数组元素的个数',a.size)
    print('数组元素的字节长度',a.itemsize)
    print('数组元素的字节长度总和:',a.nbytes)
    print('数组的一维迭代器:',a.flat)

在这里插入图片描述

二、数据类型

1.numpy 的数据类型

# 浮点型
np.float64(42)
# 整型
b=np.int8(60)
# 注意:转换的值不要超出数据类型的范围
np.int8(400)   #-112
#布尔类型,注意:除了0为false,其他的数字都为true
np.bool(0) # false
np.bool(1) # true 
np.float64(True) # 1.0
np.int(False) # 0
np.int(True) # 1

2.numpy字符编码

整数 :i
无符号整数:u
单精度浮点数:f
双精度浮点数:d
布尔值:b
复数:D
字符串:s
unicode字符串:U
void(空):v

#类似range,创建浮点型的数组
np.arange(7,dtype='f')

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

# 创建复数型的数组
np.arange(7,dtype='D')

array([0.+0.j, 1.+0.j, 2.+0.j, 3.+0.j, 4.+0.j, 5.+0.j, 6.+0.j])

3.自定义数据类型

案例:利用dtype创建一个存储商店库存信息的数据类 用一个长度为40个字符的字符串来记录商品名称,用一个32位的 整数来记录商品的库存数量,最后用一个32位的单精度浮点数来 记录商品价格。

# 准备好数据类型
t=np.dtype([('name',np.str,40),('num',np.int32),('price',np.float32)]) #默认是32
t

dtype([(‘name’, ‘<U40’), (‘num’, ‘<i4’), (‘price’, ‘<f4’)])

# 运用上面的数据类型在商品之中
items=np.array([
    ('DVD',42,3.14),
    ('Butter',13,2.72)
],dtype=t)
items

看一下t.names是什么

t.names

(‘name’, ‘num’, ‘price’)

print(t.names[0],'\t',t.names[1],'\t',t.names[2])
for i in range(items.size):
    print('------------------------------')
    print(items[i][0],'\t',items[i][1],'\t',items[i][2])
    

name num price
------------------------------
DVD 42 3.14
------------------------------
Butter 13 2.72

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值