Python|Numpy_数据类型操作————python数据分析系列(二)

前言

        续上一小节,我们创建了一系列的数组,那么我们之后要做的便是对着这些数组进行简要的操作,本小节介绍的将是数组维度的查询,以及数组的数据类型的转换。话不多说,大家请上车。

数组维度的查询

        在查询数组维度之前得有数组啊,因此我在进行每一个数组的操作时都会随意弄了一个数组(之前看过我作品的应该都知道)

查看数组的维数

        查看维度使用ndim()函数,下面以一维和二维做对比,一维以向量为例,二维以矩阵为例。

import numpy as np               # 这样引入能大大减少编码时间

arr_1 = np.arange(10)            #  生成一维度的向量  
arr_2 = np.random.randn(2,3)     # 生成2*3的数组矩阵  

print("arr_1的维度是:", arr_1.ndim)
print("arr_2的维度是:", arr_2.ndim)

arr_1的维度是: 1
arr_2的维度是: 2

注:日后的文章都会尽量使用这种类型的格式来输出结果

查看数组有多少个行和列

        查看行数和列数可以使用shape()函数,该函数返回的是一个(rows,cols)形式的结果。

	arr_3 = np.random.randn(7,5)     # 生成7*5的数组矩阵  
	arr_3.shape                      # 显示矩阵的行列数
	
	#  单独输出行列
	print("arr_3的行数为:", arr_3.shape[0])
	print("arr_3的行数为:", arr_3.shape[1])

arr_3的行数为: 7
arr_3的行数为: 5

数据的数据类型操作

        在了解数组的维度,尺寸大小之后呢,就要来深析数组的内部信息,这边介绍的是数组内的数据类型定义与转换。

首先查看数组数据类型的规则

        查看数据类型使用dtypr()函数
        在生成数据之中,假设你数据全是同样的形式,那么他生成的数组的数据类型就是你输入的形式(如arr_5),那么假设你输入的数组中有一个与其他类型不一样,数组就会按精度更高的数据类型生成数组(如arr_4)。

arr_4 = np.array([1 ,2.5 ,6 ,8.5]) 

print("arr_4的数组内容为:\n", arr_4)
print("arr_4的数据类型为:", arr_4.dtype)

arr_5 = np.array([1 ,3 ,5,7]) 

print("arr_5的数组内容为:\n", arr_5)
print("arr_5的数据类型为:", arr_5.dtype)

arr_4的数组内容为:
[1. 2.5 6. 8.5]
arr_4的数据类型为: float64
arr_5的数组内容为:
[1 3 5 7]
arr_5的数据类型为: int32

定义数据类型的格式

       自定义数据类型也是用dtype函数,此处应加在结尾。
        数据既然这么善变,我们肯定是有办法将它封印住的,在变量的后面可自定义dtype。同样我们将arr_4强制转为整型,将arr_5强制转换为浮点型。

arr_6 = np.array(arr_4, dtype = np.int32)
print("arr_6的数据类型为:",arr_6.dtype)

# 对比改变前后的变化
print("arr_4的数组内容为:\n", arr_4)     
print("arr_6的数组内容为:\n", arr_6)

arr_7 = np.array(arr_5, dtype = np.float64)
print("arr_7的数据类型为:", arr_7.dtype)

arr_8 = np.array([1.2, 3.6, 5, 8.8, 9], dtype = np.int32)
print("arr_8的数组内容为:\n", arr_8)
print("arr_8的数据类型为:", arr_8.dtype)

arr_6的数据类型为: int32
arr_4的数组内容为:
[1. 2.5 6. 8.5]
arr_6的数组内容为:
[1 2 6 8]
arr_7的数据类型为: float64
arr_8的数组内容为:
[1 3 5 8 9]
arr_8的数据类型为: int32

注:在使用自定义将浮点型转为整型时,系统并不会自己进行四舍五入,而是直接将小数点后面全砍掉,只保留整数部分

数据类型的转换

       转换数据类型用astype()函数
       难免有时候会使用别人的数据,或是生米煮成了熟饭时,我们无法再去定义数据的类型,那我们将进行数据的转换。只要满足一定条件,就连字符型的数据也可转化为浮点型。

arr_9 = np.array([-3.2, 1.2, 2.5, 0.9, 6.6])     # 生成数组arr_9
print ("arr_9的数据类型为:",arr_9.dtype)

arr_10 = arr_9.astype(np.int32)                  # 将arr_9转换数据类型
print("arr_10的数据类型为:",arr_10.dtype)

arr_11 = np.array(['1.25', '3.87', '9.93', '8'], dtype = np.string_)     # 生成一个字符型的数组
print("arr_11的数据类型为:", arr_11.dtype)

arr_12 = arr_11.astype(np.float64)                                        # 强制转换为浮点型
print("arr_12的数据类型为:", arr_12.dtype)

arr_9的数据类型为: float64
arr_10的数据类型为: int32
arr_11的数据类型为: |S4
arr_12的数据类型为: float64

小结一下

本片文章主要讲了两个函数

  • dtype()函数:两个功能
    1. 查看数据类型
    2. 自定义数据类型
  • astype()函数:主要就一个功能强制转换 括号里是什么类型就转换为什么类型

完整代码献上

import numpy as np               # 这样引入能大大减少编码时间

arr_1 = np.arange(10)            #  生成一维度的向量  
arr_2 = np.random.randn(2,3)     # 生成2*3的数组矩阵  

print("arr_1的维度是:", arr_1.ndim)
print("arr_2的维度是:", arr_2.ndim)

arr_3 = np.random.randn(7,5)     # 生成7*5的数组矩阵  
arr_3.shape                      # 显示矩阵的行列数

#  单独输出行列
print("arr_3的行数为:", arr_3.shape[0])
print("arr_3的行数为:", arr_3.shape[1])

#  dtype
arr_4 = np.array([1 ,2.5 ,6 ,8.5]) 

print("arr_4的数组内容为:\n", arr_4)
print("arr_4的数据类型为:", arr_4.dtype)

arr_5 = np.array([1 ,3 ,5,7]) 

print("arr_5的数组内容为:\n", arr_5)
print("arr_5的数据类型为:", arr_5.dtype)

arr_6 = np.array(arr_4, dtype = np.int32)
print("arr_6的数据类型为:",arr_6.dtype)

# 对比改变前后的变化
print("arr_4的数组内容为:\n", arr_4)     
print("arr_6的数组内容为:\n", arr_6)

arr_7 = np.array(arr_5, dtype = np.float64)
print("arr_7的数据类型为:", arr_7.dtype)

arr_8 = np.array([1.2, 3.6, 5, 8.8, 9], dtype = np.int32)
print("arr_8的数组内容为:\n", arr_8)
print("arr_8的数据类型为:", arr_8.dtype)

#  astype使用
arr_9 = np.array([-3.2, 1.2, 2.5, 0.9, 6.6])     # 生成数组arr_9
print ("arr_9的数据类型为:",arr_9.dtype)

arr_10 = arr_9.astype(np.int32)                  # 将arr_9转换数据类型
print("arr_10的数据类型为:",arr_10.dtype)

arr_11 = np.array(['1.25', '3.87', '9.93', '8'], dtype = np.string_)     # 生成一个字符型的数组
print("arr_11的数据类型为:", arr_11.dtype)

arr_12 = arr_11.astype(np.float64)                                        # 强制转换为浮点型
print("arr_12的数据类型为:", arr_12.dtype)
创作不易,各位看官求三连(点赞+收藏+转发),你们的鼓(dainzhan)励(shoucang)是我创作的动力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

铭记yu心

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值