numpy中数据类型及常见属性介绍

ndarray常用属性:

ndarray.dtype:
因为数组中只能存储同一种数据类型,因此可以通过dtype获取数组中的元素的数据类型。以下是ndarray.dtype的常用的数据类型:
在这里插入图片描述
我们可以看到,Numpy中关于数值的类型比Python内置的多得多,这是因为Numpy为了能高效处理处理海量数据而设计的。举个例子,比如现在想要存储上百亿的数字,并且这些数字都不超过254(一个字节内),我们就可以将dtype设置为int8,这样就比默认使用int64更能节省内存空间了。类型相关的操作如下:
1 默认的数据类型:

import numpy as np
a1 = np.array([1,2,3])
print(a1.dtype) 
# 如果是windows系统,默认是int32
# 如果是mac或者linux系统,则根据系统来

2 指定dtype

import numpy as np
a1 = np.array([1,2,3],dtype=np.int64)
# 或者 a1 = np.array([1,2,3],dtype="i8")
print(a1.dtype)

3 修改dtype:

import numpy as np
a1 = np.array([1,2,3])
print(a1.dtype) # window系统下默认是int32
# 以下修改dtype
a2 = a1.astype(np.int64) # astype不会修改数组本身,而是会将修改后的结果返回
print(a2.dtype)

ndarray.size:
获取数组中总的元素的个数。比如有个二维数组:

 import numpy as np
 a1 = np.array([[1,2,3],[4,5,6]])
 print(a1.size) #打印的是6,因为总共有6个元素

ndarray.ndim
数组的维数。比如:

   a1 = np.array([1,2,3])
   print(a1.ndim) # 维度为1
   a2 = np.array([[1,2,3],[4,5,6]])
   print(a2.ndim) # 维度为2
   a3 = np.array([[[1,2,3],[4,5,6]],[[7,8,9],[10,11,12]]])
   print(a3.ndim) # 维度为3

ndarray.shape:
数组的维度的元组。比如以下代码:

   a1 = np.array([1,2,3])
   print(a1.shape) # 输出(3,),意思是一维数组,有3个数据

   a2 = np.array([[1,2,3],[4,5,6]])
   print(a2.shape) # 输出(2,3),意思是二位数组,2行3列

   a3 = np.array([
       [
           [1,2,3],
           [4,5,6]
       ],
       [
           [7,8,9],
           [10,11,12]
       ]
   ])
   print(a3.shape) # 输出(2,2,3),意思是三维数组,总共有2个元素,每个元素是2行3列的

另外,我们还可以通过ndarray.reshape来重新修改数组的维数。示例代码如下:

   a1 = np.arange(12) #生成一个有12个数据的一维数组
   print(a1) 

   a2 = a1.reshape((3,4)) #变成一个2维数组,是3行4列的
   print(a2)

   a3 = a1.reshape((2,3,2)) #变成一个3维数组,总共有2块,每一块是2行2列的
   print(a3)

   a4 = a2.reshape((12,)) # 将a2的二维数组重新变成一个12列的1维数组
   print(a4)

   a5 = a2.flatten() # 不管a2是几维数组,都将他变成一个一维数组
   print(a5)

注意,reshape并不会修改原来数组本身,而是会将修改后的结果返回。如果想要直接修改数组本身,那么可以使用resize来替代reshape。

ndarray.itemsize:
数组中每个元素占的大小,单位是字节。比如以下代码:

   a1 = np.array([1,2,3],dtype=np.int32)
   print(a1.itemsize) # 打印4,因为每个字节是8位,32位/8=4个字节
  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值