Numpy学习01——数据类型及数组创建

数据

常用的常量

  • numpy.nan空值
  1. 两个nan是不相等的,因为它们不等于任何值。
import numpy as np 
print(np.nan == np.nan) # False
  1. numpy.isnan(x, *args, **kwargs):判断是否为空值。
import numpy as np 
x = np.array([1, 1, 8, np.nan, 10]) 
print(x) # [ 1. 1. 8. nan 10.] 
y = np.isnan(x) 
print(y) # [False False False True False] 
z = np.count_nonzero(y) 
print(z) # 1
  • numpy.inf无穷大

    • 拓展:numpy.inf表示正无穷大,-numpy.inf表示负无穷大。
  • numpy.pi圆周率

import numpy as np 
print(np.pi)
# 3.141592653589793
  • numpy.e自然常量
import numpy as np 
print(np.e)
# 2.718281828459045

数据类型

1.常见的数据类型

  • Python 原生的数据类型相对较少, bool、int、float、str等。这在不需要关心数据在计算机中表示的所有方式的应用中是方便的。然而,对于科学计算,通常需要更多的控制。为了加以区分 numpy 在这些类型名称末尾都加了“_”。
  • 常用numpy基本类型如下:
    在这里插入图片描述

2.创建数据类型

  • numpy 的数值类型实际上是 dtype 对象的实例,并对应唯一的字符,包括 np.bool_,np.int32,np.float32,等等。
  • dtype 对象是使用以下语法构造的:
    object - 要转换为的数据类型对象
    align - 如果为 true,填充字段使其类似 C 的结构体。
    copy - 复制 dtype 对象 ,如果为 false,则是对内置数据类型对象的引用
numpy.dtype(object, align, copy)
  • 实例:
import numpy as np
# 使用标量类型
dt = np.dtype(np.int32)
print(dt)
# int32
  • 每个内建类型都有一个唯一定义它的字符代码,如下:
    在这里插入图片描述
x = np.dtype('f4')
print(x)
# float32

3.数据类型信息

  • Python 的浮点数通常是64位浮点数,几乎等同于 numpy.float64 。
  • NumPy和Python整数类型的行为在整数溢出方面存在显着差异,与 NumPy 不同,Python 的 int 是灵活的。这意味着Python整数可以扩展以容纳任何整数并且不会溢出。

时间日期和时间增量

datetime64

  • numpy可以很方便的将字符串转换成时间日期类型 datetime64。
  • datatime64 是带单位的日期时间类型,其单位如下:
    在这里插入图片描述
  • 从字符串创建 datetime64 类型时,默认情况下,numpy 会根据字符串自动选择对应的单位。从字符串创建 datetime64 类型时,可以强制指定使用的单位。如果两个 datetime64 对象具有不同的单位,它们可能仍然代表相同的时刻。并且从较大的单位(如月份)转换为较小的单位(如天数)是安全的。
  • 使用 arange() 创建 datetime64 数组,用于生成日期范围。
list = np.arange('2020-06-25','2020-09-11',30,dtype=np.datetime64)
print(list)
# ['2020-06-25' '2020-07-25' '2020-08-24']

datetime64 和 timedelta64 运算

  • timedelta64 表示两个 datetime64 之间的差。timedelta64 也是带单位的,并且和相减运算中的两个 datetime64 中的较小的单位保持一致。

数组

数组的创建

1.依据现有数据来创建 ndarray

  • 通过array()函数进行创建
  • 通过asarray()函数进行创建
import numpy as np 
x = [[1, 1, 1], [1, 1, 1], [1, 1, 1]] 
y = np.array(x) 
z = np.asarray(x) 
x[1][2] = 2 
print(x,type(x)) 
# [[1, 1, 1], [1, 1, 2], [1, 1, 1]] <class 'list'> 
print(y,type(y)) 
# [[1 1 1] 
# [1 1 1] 
# [1 1 1]] <class 'numpy.ndarray'> 
print(z,type(z)) 
# [[1 1 1] 
# [1 1 1] 
# [1 1 1]] <class 'numpy.ndarray'>

注:array() 和 asarray() 主要区别就是当数据源是ndarray 时, array() 仍然会 copy 出一个副本,占用新的内存,但不改变 dtype 时 asarray() 不会。

  • 通过fromfunction()函数进行创建
    给函数绘图的时候可能会用到 fromfunction() ,该函数可从函数中创建数组。
x = np.fromfunction(f, (5, 4), dtype=int) 
print(x) 
# [[0 1 2 3] 
# [10 11 12 13] 
# [20 21 22 23] 
# [30 31 32 33] 
# [40 41 42 43]]

2.依据 ones 和 zeros 填充方式

  • 零数组
  1. zeros() 函数:返回给定形状和类型的零数组。
  2. zeros_like() 函数:返回与给定数组形状和类型相同的零数组。
  • 1数组
  1. ones() 函数:返回给定形状和类型的1数组。
  2. ones_like() 函数:返回与给定数组形状和类型相同的1数组。
  • 空数组
  1. empty() 函数:返回一个空数组,数组元素为随机数
  2. empty_like 函数:返回与给定数组具有相同形状和类型的新数组。
  • 单位数组
  1. eye() 函数:返回一个对角线上为1,其它地方为零的单位数组。
  2. identity() 函数:返回一个方的单位数组。
  • 对角数组
  1. diag() 函数:提取对角线或构造对角数组。
  • 常数数组
  1. full() 函数:返回一个常数数组。
  2. full_like() 函数:返回与给定数组具有相同形状和类型的常数数组。

3.利用数值范围来创建ndarray

  1. arange() 函数:返回给定间隔内的均匀间隔的值。
  2. linspace() 函数:返回指定间隔内的等间隔数字。
  3. logspace() 函数:返回数以对数刻度均匀分布。
  4. numpy.random.rand() 返回一个由[0,1)内的随机数组成的数组。

4. 结构数组的创建

结构数组,首先需要定义结构,然后利用 np.array() 来创建数组,其参数 dtype 为定义的结构。

  • 利用字典来定义结构
  • 利用包含多个元组的列表来定义结构

5.数组的属性

在使用 numpy 时,你会想知道数组的某些信息。很幸运,在这个包里边包含了很多便捷的方法,可以给你想要的信息。

  1. numpy.ndarray.ndim 用于返回数组的维数(轴的个数)也称为秩,一维数组的秩为 1,二维数组的秩为 2,以此类推。
  2. numpy.ndarray.shape 表示数组的维度,返回一个元组,这个元组的长度就是维度的数目,即 ndim 属性(秩)。 3. numpy.ndarray.size 数组中所有元素的总量,相当于数组的 shape 中所有元素的乘积,例如矩阵的元素总量为行与列的乘积。
  3. numpy.ndarray.dtype ndarray 对象的元素类型。
  4. numpy.ndarray.itemsize 以字节的形式返回数组中每一个元素的大小。
    注:在 ndarray 中所有元素必须是同一类型,否则会自动向下转换, int->float->str 。
import numpy as np 
b = np.array([[1, 2, 3], [4, 5, 6.0]]) 
print(b.shape) # (2, 3) 
print(b.dtype) # float64 
print(b.size) # 6 
print(b.ndim) # 2 
print(b.itemsize) # 8
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值