python学习笔记【2】——区分python中的列表(list),数组(array),元组(tuple),矩阵(matrix),张量(tensor,来自tensorflow)

最近学习python以及tensorflow,由于不是相关专业的,被各种类似概念搞得头大,有时候混淆在所难免。其实很多概念只是在不同的环境下用了不同的名称,其数学本质是相同的,通过一段时间的网上查询和学习,这里我就试图捋一捋这几个经常遇到的概念:

【1】列表——list(python概念)

python中的列表通常通过a = [ ] 创建,list内的元素可以为数字,字符串等,元素类型可不同。除非使用numpy将list转换array,否则python本身是没有数组(array)这种说法的; list中不同元素可以有不同的数据类型,而array中元素必须是同种类型,举例如下:

a = [1,2,'a','3']
print(a)
print(type(a))
print(np.shape(a))        #此处不可使用a.shape 因为 AttributeError: 'list' object has no attribute 'shape'
print(type(a[0]),type(a[1]),type(a[2]),type(a[3]))
print()

b = np.array(a)
print(b)
print(type(b))
print(b.shape)
print(type(b[0]),type(b[1]),type(b[2]),type(b[3]))  #将列表a变换成数组b后,整型元素全部变换成字符串类型
print(b.dtype)     #dtype只是属于array的一种Attribute,list没有此属性

#运行结果如下
[1, 2, 'a', '3']
<class 'list'>
(4,)
<class 'int'> <class 'int'> <class 'str'> <class 'str'>

['1' '2' 'a' '3']
<class 'numpy.ndarray'>
(4,)
<class 'numpy.str_'> <class 'numpy.str_'> <class 'numpy.str_'> <class 'numpy.str_'>
<U11   #dtype只是属于array的一种Attribute,U代表unicode,在python3中包括字符串类型。

【2】数组——array(numpy概念)

数组一般用a = np.array() 创建,要求元素类型一致。若同时包含数字和字符串,则数字自动转换成字符串。数组元素也可以是list,其他方面,数组和列表区别不大,可以进行索引,切片,加减乘除等运算。一般需要进行数据运算时推荐使用numpy array,比python本身的list格式更加方便和灵活。举例如下:

c= np.array([1,2,3,4])
print(c)
print(c.shape)
print(c.dtype)
print(c.ndim)
print()

d = np.array([[1,2,3,4]])
print(d)
print(d.shape)
print(d.ndim)

#运行结果如下:

[1 2 3 4]
(4,)
int32
1

[[1 2 3 4]]
(1, 4)
2

#继续举例如下:

e = np.array([[1,2,3,4],[5,6]])
print(e)
print(e.shape)
print(e.dtype)
print(e.ndim)
print()

f = np.array([[1,2,3,4],[5,6,7,8]])
print(f)
print(f.shape)
print(f.dtype)
print(f.ndim)

#运行结果如下:

[list([1, 2, 3, 4]) list([5, 6])]
(2,)
object
1

[[1 2 3 4]
 [5 6 7 8]]
(2, 4)
int32
2

【3】元组——tuple(python概念)

元组(tuple)区别于列表和数组的地方在于,元组一旦定义,不可以进行修改;而列表和数组是可以的。除此之外元组性质与列表类似。元组使用圆括号a = ()创建,列表使用方括号a = [ ]创建,例如:

tup1 = (1,2,3,4)
print(type(tup1))
print()

tup2 = ('w',1,2)
print(type(tup2))
print(type(tup2[0]),type(tup2[1]),type(tup2[2]))
print(np.shape(tup2))
tup3 = (55,)  #单个元素的元组,后面一定要加逗号
#tup2[0] = 0 此处若加上此行,则会返回 TypeError: 'tuple' object does not support item assignment

#输出结果如下:

<class 'tuple'>

<class 'tuple'>
<class 'str'> <class 'int'> <class 'int'>
(3,)

【4】矩阵——matrix

矩阵是二维的数组(array)。数组可以有1,2,3,.....,N维,矩阵是其中一种特例。数学课本中一般叫矩阵,程序语言中一般叫二维数组。可形象理解为数据表,相应的3维数组可形象理解为数据块。创建矩阵的方法很多,比如np.mat()和np.array(),np.mat(ones((2,4)))等,示例如下:

import numpy as np
c = np.mat([[1,2],[3,4]])
d = np.array([[1,2],[4,3]])
e = np.mat(ones((2,5))) #默认是float类型
f = np.random.randint(2,8,size=(3,5)) #从2到8(不包括8)随机生成3*5的矩阵,整型
print(c)
print(c.shape)
print(d)
print(d.shape)
print(e)
print(f)

结果如下:

[[1 2]
 [3 4]]
(2, 2)
[[1 2]
 [4 3]]
(2, 2)
[[1. 1. 1. 1. 1.]
 [1. 1. 1. 1. 1.]]
[[5 5 3 7 3]
 [3 5 3 7 6]
 [6 3 5 2 4]]

【5】张量——tensor(来自tensorflow)

张量可以理解为从0维到n维数组的抽象表示。0阶张量为标量,1阶张量为向量,2阶张量为矩阵,3阶张量为3维数组,......,n阶张量为n维数组。创建方法如下:

 # Build a graph.  
a = tf.ones([2,3])  
b = tf.zeros([2,3])  
c = a * b  
# Launch the graph in a session.  
sess = tf.Session()  

print(sess.run(a)) 
print(sess.run(b))  
print(sess.run(c))  

结果如下:

[[1. 1. 1.]
 [1. 1. 1.]]
[[0. 0. 0.]
 [0. 0. 0.]]
[[0. 0. 0.]
 [0. 0. 0.]]
  • 12
    点赞
  • 58
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值