Python数据结构之Array用法实例
这篇文章主要介绍了Python数据结构之Array用法实例,较为详细的讲述了Array的常见用法,具有很好的参考借鉴价值,需要的朋友可以参考下
import ctypes
class Array:
def __init__(self, size):
assert size 0, "Array size must be 0 "
self._size = size
pyArrayType = ctypes.py_object * size
self._elements = pyArrayType()
self.clear(None)
def clear(self, value):
for index in range(len(self)):
self._elements[index] = value
def __len__(self):
return self._size
def __getitem__(self, index):
assert index = 0 and index len(self), "index must =0 and = size"
return self._elements[index]
def __setitem__(self, index, value):
def __iter__(self):
return _ArrayIterator(self._elements)
class _ArrayIterator:
def __init__(self, theArray):
self._arrayRef = theArray
self._curNdr = 0
def __next__(self):
if self._curNdr len(theArray):
entry = self._arrayRef[self._curNdr]
sllf._curNdr += 1
return entry
else:
raise StopIteration
return self
def __init__(self, numRows, numCols):
self._theRows = Array(numCols)
for i in range(numCols):
self._theRows[i] = Array(numCols)
def numRows(self):
return len(self._theRows)
def numCols(self):
return len(self._theRows[0])
for row in range(self.numRows):
self._theRows[row].clear(value)
def __getitem__(self, ndxTuple):
row = ndxTuple[0]
col = ndxTuple[1]
assert row=0 and row len(self.numRows())
and col=0 and collen(self.numCols),
"array subscrpt out of range"
theArray = self._theRows[row]
return theArray[col]
def __setitem__(self, ndxTuple, value):
assert row = 0 and row len(self.numRows)
and col = 0 and col len(self.numCols),
"row and col is invalidate"
theArray = self._theRows[row];
theArray[col] = value
希望本文所述对大家的Python程序设计有所帮助.
在Python中,list和array都可以根据索引来取其中的元素,但是list可以用append或者+来新增元素或者添加数组,而array不行.具体区别如下:
①.、作用不同
list是处理一组有序项目的数据结构;
array数组存储单一数据类型的多维数组;
list是Python的内置数据类型;
array数组需要导入标准库才行,不属于内置类型;
list中的数据类不必相同的,即每个元素可以是不同的数据类型;
array则是由Numpy封装,存放的元素都是相同的数据类型;
列表list不可以进行数学四则运算;
数组array可以进行数学四则运算;
答: 把我们定义的普通数组转化为Numpy中的array类型,这样做的好处就在于可以使用该类型定义的多种数组方法,比如排序取其中的最大值或者最小值.我们就不需要从头开始实现,直接调用相关的API就行.
numpy 是使用python进行数据分析不可或缺的第三方库,非常多的科学计算工具都是基于 numpy 进行开发的.
它的维度以及个维度上的元素个数由 shape 决定.
标题中的函数就是numpy的构造函数,我们可以使用这个函数创建一个ndarray对象.构造函数有如下几个可选参数:
实例:
此时此刻呢介绍ndarray对象最常用的属性
使用 array 函数,从常规的python列表或者元组中创建数组,元素的类型由原序列中的元素类型确定.
subok 为 True ,并且object是ndarray子类时(比如矩阵类型),返回的数组保留子类类型
某些时候,我们在创建数组之前已经确定了数组的维度以及各维度的长度.这时我们就可以使用numpy内建的一些函数来创建ndarray.
上述三个函数还有三个从已知的数组中,创建 shape 相同的多维数组: ones_like 、 zeros_like 、 empty_like ,用法如下:
除了上述几个用于创建数组的函数,还有如下几个特殊的函数:
特别地, eye 函数的全1的对角线位置有参数k确定
用法如下:
除了上面两个函数还有其他几个类似的从外部获取数据并创建ndarray,比如: frombuffer 、 fromfile 、 fromiter ,还没用过,等用到了在详细记录
ndarray提供了一些创建二维数组的特殊函数.numpy中matrix是对二维数组ndarray进行了封装之后的子类.这里介绍的关于二维数组的创建,返回的依旧是一个ndarray对象,而不是matrix子类.关于matrix的创建和操作,待后续笔记详细描述.为了表述方便,下面依旧使用 矩阵 这一次来表示创建的二维数组.
对于一维的ndarray可以使用python访问内置list的方式进行访问:整数索引、切片、迭代等方式
关于ndarray切片
与内置list切片类似,形式:
array[beg:end:step]
beg: 开始索引
end: 结束索引(不包含这个元素)
step: 间隔
需要注意的是 :
特别注意的是,ndarray中的切片返回的数组中的元素是原数组元素的索引,对返回数组元素进行修改会影响原数组的值
除了上述与list相似的访问元素的方式,ndarray有一种通过 列表 来指定要从ndarray中获取元素的索引,例如:
多维ndarray中,每一维都叫一个轴axis.在ndarray中轴axis是非常重要的,有很多对于ndarray对象的运算都是基于axis进行,比如sum、mean等都会有一个axis参数(针对对这个轴axis进行某些运算操作),后续将会详细介绍.
对于多维数组,因为每一个轴都有一个索引,所以这些索引由逗号进行分割,例如:
多维数组的迭代
可以使用ndarray的 flat 属性迭代数组中每一个元素
以上就是土嘎嘎小编为大家整理的python中array函数相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!