每日一贴,明天的内容关键字为二维、调用-
明天就到了二维的了.Python中认默是没有带二维的据数结构的.二维的据数结构可以通过一维的据数成组.码代如下
class Array2D: def __init__(self,numRows,numCols): self._theRows = Array(numRows) for i in range(numRows): self._theRows[i] = Array(numCols) def numRows(self): return len(self._theRows) def numCols(self): return len(self._theRows[0]) def clear(self,value): for r in range(self.numRows()): self._theRows[r].clear(value) def __getitem__(self,ndxTuple): assert len(ndxTuple) == 2,"Invalid number of array subscripts" row = ndxTuple[0] col = ndxTuple[1] assert row >= 0 and row <self.numRows()\ and col >= 0 and col < self.numCols(),\ "Array subscript out of range" the1dArray = self._theRows[row] return the1dArray[col] def __setitem__(self,ndxTuple,value): assert len(ndxTuple) == 2,"Invalid number of array subscripts" row = ndxTuple[0] col = ndxTuple[1] assert row >= 0 and row <self.numRows()\ and col >= 0 and col < self.numCols(),\ "Array subscript out of range" the1dArray = self._theRows[row] the1dArray[col] = value
注意下调用情势,这里的是实现了 __getitem__ ,__setitem__,这里是这样调用的 如a = Array2D(2,3) a[1,2] = 5
当然也可以像c/c++那样,改写下__getitem__
def __getitem__(self,row): return self._thwRows[row]
这时调用就是这模样 val = a[1][2] 和a[1,2] = val,连__setitem__都不要写了.相当于2次函数调用.
说到二维组数天然想到矩阵(Matrix).
当然实际用使时是直接用使numpy庫拉.
实现码代如下,其实只是在Array2D上加了几个简略的作操而已.
from array import Array2D class Matrix: def __init__(self,numRows,numCols): self._theGrid = Array2D(numRows,numCols) self._theGrid.clear(0) def numRows(self): return self._theGrid.numRows() def numCols(self): return self._theGrid.numCols() def __getitem__(self,ndxTuple): return self._theGrid[ndxTuple[0],ndxTuple[1]] def __setitem__(self,ndxTuple,scalar): self._theGrid[ndxTuple[0],ndxTuple[1]] = scalar def scaleBy(self,scalar): for r in range(self.numRows()): for c in range(self.numCols()): self[r,c] *= scalar def tranpose(self): newMatrix = Matrix(self.numCols(),self.numRows()) for r in range(self.numRows()): for c in range(self.numCols()): newMatrix[c,r] = self._theGrid[r,c] return newMatrix def __add__(self,rhsMatrix): assert rhsMatrix.numRows() == self.numRows() and \ rhsMatrix.numCols() == self.numCols(),\ "Matrix sizes not compatible for the add operation" newMatrix = Matrix(self.numRows(),self.numCols()) for r in range(self.numRows()): for c in range(self.numCols()): newMatrix[r,c] = self[r,c] + rhsMatrix[r,c] return newMatrix def __sub__(self,rhsMatrix): assert rhsMatrix.numRows() == self.numRows() and \ rhsMatrix.numCols() == self.numCols(),\ "Matrix sizes not compatible for the add operation" newMatrix = Matrix(self.numRows(),self.numCols()) for r in range(self.numRows()): for c in range(self.numCols()): newMatrix[r,c] = self[r,c] - rhsMatrix[r,c] return newMatrix def __mul__(self,rhsMatrix): assert rhsMatrix.numRows() == self.numCols() ,\ "Matrix sizes not compatible for the add operation" newR = self.numRows() newC = rhsMatrix.numCols() newK = self.numCols() newMatrix = Matrix(newR,newC) for r in range(newR): for c in range(newC): temp = 0 for k in range(newK): temp += self._theGrid[r,k]*rhsMatrix[k,c] newMatrix[r,c] = temp return newMatrix
测试也很简略.
嗯,好了睡觉...
文章结束给大家分享下程序员的一些笑话语录: 一位程序员去海边游泳,由于水性不佳,游不回岸了,于是他挥着手臂,大声求.救:“F1,F1!”
相关推荐
用python语言实现DEM数据三维可视化,点击button选择DEM数据,则可显示三维地形界面。
数据结构-Python语言描述试卷(一)附答案全文共5页,当前为第1页。数据结构-Python语言描述试卷(一)附答案全文共5页,当前为第1页。数据结构试卷(一) 数据结构-Python语言描述试卷(一)附答案全文共5页,当前为第1页...
强化学习算法-基于python的Q学习算法q-learning实现
用数据结构与算法 实现的数组 用一维数组定义用 二维数组 定义三维数组 用模版
二维ROOT-MUSIC DOA估计算法的MATLAB实现代码,可以参考学习。
python⼆维表转⼀维表_曾贤志从零基础开始学⽤Python处理 Excel数据第1,2季 教程简介: =====【曾贤志】从零基础开始⽤Python处理Excel数据====== 1-1 什么是python? .mp4 1-2 为什么要学习⽤Python处理Excel表格?...
基于matlab实现的二维 Naiver-Stokes(非定常) 流体方程的实现
分别基于Q-learning、sarsa、蒙特卡洛(强化学习)解决二维世界问题python源码+详细注释.zip分别基于Q-learning、sarsa、蒙特卡洛(强化学习)解决二维世界问题python源码+详细注释.zip分别基于Q-learning、sarsa、...
本代码为Python3.x,包括高斯分布及二维高斯分布代码,使用了numpy、scipy、matplotlib等包,适合初学者使用
本周学习内容总结 ⼀维数组,了解了⼀维数组的定义(定义⼀个数组,需要明确数组变量名,数组元素的类型和数 组⼤⼩,即数组中元素的数量) ⼀维数组定义的⼀般形式为:类型名,数组名[数组长度] 类型名指定数组中每个元素...
三维重建_基于双目视觉的三维重建项目_python_项目源码
二维CA-CFAR的一段matlab程序
用QT调用python代码,将QT读取的图像(Mat矩阵)作为参数传入python中,将QT的二维数组作为参数传递给python,python接收QT传入的图像进行计算,将结果返回给QT。
otsu二维分割-otsu二维分割.rar 大家可以学习下
密度聚类dbscan算法—python代码实现(含二维三维案例、截图、说明手册等) DBSCAN算法的python实现 它需要两个输入。第一个是。包含数据的csv文件(无标题)。主要是。py’将第12行更改为。 第二个是配置文件,其中...
两种计算二维图像计盒维数的python实现代码,代码简单,注释清楚,内含测试图片,程序可直接运行。。。。。。。
python二维ParetoFront帕累托前沿绘制
二维元胞自动机,冯诺伊曼边界,可以随意设置规则,输出图像
python绘制热力图利用python中的matplotlib中的pyplot包绘制二维热力图,反映不同区域的热度分布差异,其中函数可以自定义.zip
运用多种流形学习方法将高维数据降维,并用matplotlib将数据可视化(2维和3维) - **SVM** - **GMM** GMM和k-means作为EM算法的应用,在某种程度有些相似之处,不过GMM明显学习出一些概率密度函数来,结合相关理解...