1. list和ndarray
相同:
护理安全
列表 ( list ) 与数组(ndarray)类似,是具有相同类型的多个元素构成的整体。list和array都可以根据索引、切⽚来取其中的元素。
区别:
成人博客数组在内存中是连续的,数组⾥的元素都是同⼀类,所以⼀旦确定了⼀个数组,它的内存就确定了,因此不能像列表⼀样通
过.append()追加。列表中保存的是数据的存放的地址,简单的说就是指针并⾮数据,所以可以可以存储不同的类型,由于地址不⽤连续,所以可以通过.append()把元素的地址追加进去,由于每个元素都需要⼀个地址,增加了堆内存和CPU的开⽀。
列表不能对整体进⾏数值运算,但是数组能对整体进⾏数值运算 。
数组底层使⽤C语⾔编写,运算速度快,并且具有强⼤的运算能⼒。
import numpy as np
# 1. 列表
a =[1,2]
a.append(3)
print("数组可以追加为:", a)
玻璃模具# 2. 数组
b = np.array([1,2])
# b.append(3) # 会报错“'numpy.ndarray' object has no attribute 'append'”
2. ndarray和tensor
一株紫丁香教学设计
最⼤区别在于值是否可以改变(数据运⾏的设备)
相同:
tensor内部的数据类型为ndarray类型
区别:古代航海技术
tensor可以有加速器内存(如GPU)⽀持,既可以在CPU上运⾏也可以在GPU上运⾏。ndarray只能在CPU上运⾏。
ndarray在CPU上运⾏,因此可以改变其数值。tensor的值可以驻留在GPU上加速,GPU不具有改变元素值的能⼒,因此tensor的值不可以改变。
import tensorflow as tf
import numpy as np
# 1. ndarray
a = np.array([1,2,3])
a[1]=3
print("可以改变数组值为:", a)
# 2. tensor
b = tf.constant([1,2,3])
# b[1] = 3 # 会报错“'tensorflow.python.framework.ops.EagerTensor' object does not support item assignment”