2.1 Python数据类型与numpy数组的创建

2.1 python数据类型

2.1.1 Python整形

Python使用C语言实现。其中,它的整型是一个C语言结构体,包含四部分:

1、ob_refcnt,它是一个引用计数,帮助python处理内存分配和回收;

2、ob_type, 它将变量类型编码;

3、ob_size,它指定接下来的数据成员大小;

4、ob_digit,包含我们希望python变量显示的实际整型值。

由此可见,与C相比,python存储一个整型,会带来一定的开销。这是因为,C语言中的整型,本质上是一个标签,而python中的整型则是一个指针,指向包含这个python类型所有信息的某一个内存体的位置。这是Python之所以可以自由地动态编码的原因所在,但是也带来了额外的开销。

2.1.2 Python列表

Python中的标准可变容器是列表。我们可以用下面的方式创建一个列表:

#创建一个从0到9的列表
L = list(range(10)) 
# 创建一个形如['0', '1', '2', '3'...'9']的列表
L2 = [str(c) for c in L]

甚至我们也可以创建一个异构类型的列表,也就是说,这个列表可以包含多个数据类型:

L3 = [True, "232", 3.4, 7]

这其中,每一项都是一个完整的对象。这样固然带来了灵活性,但是也会带来额外的开销。如果使用同一类型的数据,那么存储在固定类型的数组中应该更加高效。

2.1.3 Python中的固定类型数组

Python提供的array模块,可以用于创建同一类型的数组:

import array
L = list(range(10))
A = array('i', L) # 参数'i'用于指定类型为整型

更实用的做法是numpy中的ndarray数组。python数组对象可以存储一系列相同类型的数据,但是ndarray提供了高效的操作。下面,我们来看一下创建Numpy数组的方法。

2.1.4 创建ndarray数组

使用np.array从列表创建数组:

np.array([1, 2, 3, 4, 5]) # 必须是同一类型的数据

Numpy要求必须是同一类型的数据。如果不是,Numpy会进行向上兼容,例如整型创建为浮点型。如果希望某一类型,可以使用dtype关键字:

# 使用浮点数存储数据
np.array([1, 2, 3, 4, ], dtype='float32')

此外,也可以创建一个多维数组:

np.array([range(i, i+3) for i in [2, 4, 6]])

也可以从头创建数组,如:

1、创建一个长度为10的数组,数组值都是0:

np.zeros(10, dtype=int)

2、创建一个3*5的数组,数组值都是1:

np.ones((3, 5), dtype=int)

3、创建一个3*5的浮点数数组,数组值都是3.14:

np.full((3, 5), dtype=float32)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值