python基本数据类型使用——list array narray
python ndarray数组和list列表的优势和区别
ndarray是numpy库的多维数组数据类型,ndarray和list的区别和优势如下:
'''ndarray数组和list列表的区别''' #ndarray元素必须具有相同的数据类型,而list可以不同 a=np.array([0,1,'a']) b=[0,1,'a'] print (type(a[0])) print (type(b[0])) #ndarray可与标量直接运算,数组之间也可矢量化运算 a=np.arange(0.0,1,0.1) print (a+10,type(a)) b=np.arange(10,20,1) print (a+b) a=list(range(0,10,1)) b=list(range(10,20,1)) print (a+b) #列表(list)相加是两个list前后连接在一起 #ndarray可对维数不同的矢量进行广播计算 a=np.arange(1,4) b=np.array([[1,2,3],[4,5,6]]) print (a+b)
其他优势:
数组底层使用C中数组的存储方式(紧凑存储),节省内存空间。
数据结构" 数组 "存储多个元素时,是使用的最广泛一种数据结构
数组存储特点:连续空间上存储元素
优点:数组的随机访问性特别好。
验证内存:ndarray占用的内存要比列表少
23_Python列表和数组以及numpy.ndarray的区别和正确使用
Python在标准库中有一个内置类型的列表列表和一个数组数组。您也可以通过安装数值计算库NumPy使用多维数组numpy.ndarray。
将解释它们各自的区别和正确使用。
列表 - list
数组 - array
多维数组 - numpy.ndarray
列表与数组和numpy.ndarray之间的区别
列表 - list
内置式:无需导入即可使用
可以存储不同类型:也可以通过列表表示多维数组
尽管从狭义上讲它可能不同于数组,但列表通常足以进行简单的类似数组的处理。
l = ['apple', 100, 0.123]
print(l)
# ['apple', 100, 0.123]
l_2d = [[0, 1, 2], [3, 4, 5], [6, 7, 8]]
print(l_2d)
# [[0, 1, 2], [3, 4, 5], [6, 7, 8]]
提取元素时,请使用[]指定位置(index)。
print(l[1])
# 100
print(l_2d[1])
# [3, 4, 5]
print(l_2d[1][1])
# 4
可以指定多个切片[:]。
print(l[:2]) # ['apple', 100]
使用内置函数max(),min(),sum(),len()计算最大值,最小值,总计,平均值等的示例。 len()是一个返回元素数的函数。
l_num = [0, 10, 20, 30] print(min(l_num)) # 0 print(max(l_num)) # 30 print(sum(l_num)) # 60 print(sum(l_num) / len(l_num)) # 15.0
for语句进行循环处理的示例。
l_str = ['apple', 'orange', 'banana'] for s in l_str: print(s) # apple # orange # banana
数组 - array
导入并使用标准库的数组模块
只能存储相同类型
仅一维数组
可以使用与列表相同的方式来处理它,但对类型有限制。
与类型代码不匹配的类型的元素无法存储。
import array
arr_int = array.array('i', [0, 1, 2])
print(arr_int)
# array('i', [0, 1, 2])
arr_float = array.array('f', [0.0, 0.1, 0.2])
print(arr_float)
# array('f', [0.0, 0.10000000149011612, 0.20000000298023224])
# arr_int = array.array('i', [0, 0.1, 2])
# TypeError: integer argument expected, got float
与列表相同的处理是可能的。
print(arr_int[1]) # 1 print(sum(arr_int)) # 3
多维数组 - numpy.ndarray
安装和使用Numpy
只能存储相同类型
可以表示多维数组
丰富的数值计算方法和功能,可实现高速计算
import numpy as np arr = np.array([0, 1, 2]) print(arr) # [0 1 2] arr_2d = np.array([[0, 1, 2], [3, 4, 5]]) print(arr_2d) # [[0 1 2] # [3 4 5]]
对于多维数组,请指定以逗号分隔的位置(索引)。也可以使用切片。
print(arr[1]) # 1 print(arr_2d[1, 1]) # 4 print(arr_2d[0, 1:]) # [1 2]
可以对每个元素(例如,平方根)执行操作或查找矩阵乘积。 打印(np.sqrt(arr_2d))
print(np.sqrt(arr_2d)) # [[0. 1. 1.41421356] # [1.73205081 2. 2.23606798]] arr_1 = np.array([[1, 2], [3, 4]]) arr_2 = np.array([[1, 2, 3], [4, 5, 6]]) print(np.dot(arr_1, arr_2)) # [[ 9 12 15] # [19 26 33]]
nd表示N维(N-dimensional)。
python ndarray数组和list列表的优势和区别
https://blog.csdn.net/tianyongsen1/article/details/109287772
23_Python列表和数组以及numpy.ndarray的区别和正确使用

浙公网安备 33010602011771号