python:列表list vs 数组numpy.array

0.绪:

(1)序列是Python中最基本的数据结构。序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推。

(2)Python有6个序列的内置类型,但最常见的是列表list和元组

(3)序列都可以进行的操作包括索引,切片,加,乘,检查成员。此外,Python已经内置确定序列的长度以及确定最大和最小的元素的方法。

1.列表list:

python中的list是python的内置数据类型,list中的数据类型不必相同的,而array的中的类型必须全部相同

在list中的数据类型保存的是数据的存放的地址,简单的说就是指针,并非数据,这样保存一个list就太麻烦了,例如list1=[1,2,3,'a']需要4个指针和四个数据,增加了存储和消耗cpu。

 

(1)列表是最常用的Python数据类型,它可以作为一个方括号内的逗号分隔值出现。

(2)列表的数据项不需要具有相同的类型, 创建一个列表,只要把逗号分隔的不同的数据项使用方括号括起来即可。

(3)与字符串的索引一样,列表索引从0开始。列表可以进行截取、组合等。

如下所示:

list1 = ['physics', 'chemistry', 1997, 2000] 
list2 = [1, 2, 3, 4, 5 ] 
list3 = ["a", "b", "c", "d"]

2.访问列表list中的值:

使用下标索引来访问列表中的值,同样你也可以使用方括号的形式截取字符,如下所示:

#!/usr/bin/python
 
list1 = ['physics', 'chemistry', 1997, 2000]
list2 = [1, 2, 3, 4, 5, 6, 7 ]
 
print "list1[0]: ", list1[0]
print "list2[1:5]: ", list2[1:5]

结果:

list1[0]:  physics
list2[1:5]:  [2, 3, 4, 5]

3.更新列表list:

你可以对列表的数据项进行修改或更新,你也可以使用append()方法来添加列表项,如下所示:

#!/usr/bin/python
# -*- coding: UTF-8 -*-
 
list = []          ## 空列表
list.append('Google')   ## 使用 append() 添加元素
list.append('Runoob')
print list

结果:

['Google', 'Runoob']

4.删除列表元素

可以使用 del 语句来删除列表的元素,如下实例:

#!/usr/bin/python
 
list1 = ['physics', 'chemistry', 1997, 2000]
 
print list1
del list1[2]
print "After deleting value at index 2 : "
print list1

结果:

['physics', 'chemistry', 1997, 2000]
After deleting value at index 2 :
['physics', 'chemistry', 2000]

5.Python列表脚本操作符

列表对 + 和 * 的操作符与字符串相似。+ 号用于组合列表,* 号用于重复列表。如下所示:

6.Python列表截取:

>>>L = ['Google', 'Runoob', 'Taobao']
>>> L[2]
'Taobao'
>>> L[-2]
'Runoob'
>>> L[1:]
['Runoob', 'Taobao']
>>>

描述:

7.Python列表函数&方法:

=========================================数组======================================

0.绪:

为什么要用numpy?

Python中提供了list容器,可以当作数组使用。但列表中的元素可以是任何对象,因此列表中保存的是对象的指针,这样一来,为了保存一个简单的列表[1,2,3]。就需要三个指针和三个整数对象。对于数值运算来说,这种结构显然不够高效。另Python虽然也提供了array模块,但其只支持一维数组,不支持多维数组(在TensorFlow里面偏向于矩阵理解),也没有各种运算函数。因而不适合数值运算。NumPy的出现弥补了这些不足。

                                                                                                                                                   (——摘自张若愚的《Python科学计算》)
 

import numpy as np

1.数组创建:

## 常规创建方法
a = np.array([2,3,4])
b = np.array([2.0,3.0,4.0])
c = np.array([[1.0,2.0],[3.0,4.0]])
d = np.array([[1,2],[3,4]],dtype=complex) # 指定数据类型
print a, a.dtype
print b, b.dtype
print c, c.dtype
print d, d.dtype

结果

2.数组的常用函数:

    print(np.arange(0, 7, 1, dtype=np.int16)) #[0,7),间隔为1时可缺省(引起歧义下不可缺省)

    print(np.ones((2, 3, 4), dtype=np.int16))  # 2页,3行,4列,全1,指定数据类型

    print(np.zeros((2, 3, 4)))  #2页,3行,4列,全0

    print(np.empty((2, 3))) #值取决于内存

    print(np.arange(0, 10, 2))#[0,10),不超过10,步长为2

    print(np.linspace(-1, 2, 5)) # 起点为-1,终点为2,取5个点

    print(np.random.randint(0, 3, (2, 3)))#[0,3),2行3列的随机整数

3.类型转换:

    print(float(1))

    print(int(1.0))

    print(bool(2))

    print(float(True))

4.数组输出

 从左到右,从上向下;    一维数组打印成行,二维数组打印成矩阵,三维数组打印成矩阵列表;

    print(np.arange(1, 6, 2))

    print(np.arange(12).reshape(3, 4))# 可以改变输出形状

    print(np.arange(24).reshape(2, 3, 4)) # 2页,3行,4页

5.基本运算:

    ## 元素级运算
    a = np.array([1, 2, 3, 4])
    b = np.arange(4)
    print(a, b)
    print(a-b)
    print(a*b)
    print(a**2)
    print(2 * np.sin(a))
    print(a > 2)
    print(np.exp(a))# 指数

    ## 矩阵运算(二维数组)
    a = np.array([[1, 2], [3, 4]])  # 2行2列
    b = np.arange(6).reshape((2, -1))  # 2行3列
    print(a, b)
    print(a.dot(b))  # 2行3列

    ## 非数组运算,调用方法
    a = np.random.randint(0, 5, (2, 3))
    print(a)
    print(a.sum(), a.sum(axis=1), a.sum(0))# axis用于指定运算轴(默认全部,可指定0或1)
    print(a.min(), a.max(axis=1), a.mean(axis=1))# axis = 0: 按列计算,axis = 1: 按行计算
    print(a.cumsum(1)) # 按行计算累积和

 

====待续====

 

 

 

 

 

 

 

参考:

1.https://www.runoob.com/python/python-lists.html

2.https://blog.csdn.net/fu6543210/article/details/83240024

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值