数组、多维-Python和数据结构学习 -by小雨

本文介绍了一种在Python中实现多维数组的方法,通过自定义类实现多维数组到一维数组的映射,包括创建、获取和设置元素等操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近应用开发的过程中出现了一个小问题,顺便记录一下原因和方法--数组、多维-

    昨天勤了没写,天今也勤了.

    这个是多维数组.在c/c++多维数组可以应用编译器帮你算计.但是在Python中没有这个功能.只好写类了.

    码代如下:

class MulitArray:
    def __init__(self,*dimensions):
        assert len(dimensions) > 1
        self._dims = dimensions
        size = 1
        for d in dimensions:
            assert d > 0,"Dimeons must be >0"
            size*= d
        self._elements = Array(size)
        self._factors = Array(len(dimensions))
        self._computeFactors()
        
    def numDims(self):
        return len(self._dims)
    
    
    def length(self,dim):
        assert dim >= 1 and dim < len(self._dims),\
            "Dimension component out of range"
        #从1开始
        return self._dims[dim-1]
    
    def clear(self,value):
        self._elements.clear(value)
        
    def __getitem__(self,ndxTuple):
        assert len(ndxTuple) == self.numDims(),"Invalid # of array subscripts"
        index = self._computeIndex(ndxTuple)
        assert index is not None,"Array subscript out of range"
        return self._elements[index]
    
    def __setitem__(self,ndxTuple,value):
        assert len(ndxTuple) == self.numDims(),"Invalid # of array subscripts"
        index = self._computeIndex(ndxTuple)
        assert index is not None,"Array subscript out of range"
        self._elements[index] = value
        
    def _computeIndex(self,idx):
        offset  = 0
        for j in range(len(idx)):
            #其实这里也没必要设置的只要最后结果好就行
            if idx[j] < 0 or idx[j] >= self._dims[j]:
                return None
            else:
                offset += idx[j] * self._factors[j]
        return offset
    
    def _computeFactors(self):
        f = 1
        for i in range(self.numDims()-1,-1,-1):
            self._factors[i] = f
            f *= self._dims[i]

这个很简单,就是将多维数组射映到一维数组上,取存都应用了算计.

    当然这里只是很简单的实现,往深刻些的话 就得斟酌很多了,有取取多维数组中的子数组,约节内存啥的

    当然记得,<码代之美>上讲到关于射映的高等巧技的,还有c++中vararray和slice_array(不过像好很少有人用)也可以模拟出高维数组.

    额,看书先..

文章结束给大家分享下程序员的一些笑话语录: 自行车
一个程序员骑着一个很漂亮的自行车到了公司,另一个程序员看到了他,问 到,“你是从哪搞到的这么漂亮的车的?”
骑车的那个程序员说, “我刚从那边过来, 有一个漂亮的姑娘骑着这个车过来, 并停在我跟前,把衣服全脱了,然后对我说,‘你想要什么都可以’”。
另一个程序员马上说到, “你绝对做了一个正确的选择, 因为那姑娘的衣服你 并不一定穿得了”。

内容概要:《中文大模型基准测评2025年上半年报告》由SuperCLUE团队发布,详细评估了2025年上半年中文大模型的发展状况。报告涵盖了大模型的关键进展、国内外大模型全景图及差距、专项测评基准介绍等。通过SuperCLUE基准,对45个国内外代表性大模型进行了六大任务(数学推理、科学推理、代码生成、智能体Agent、精确指令遵循、幻觉控制)的综合测评。结果显示,海外模型如o3、o4-mini(high)在推理任务上表现突出,而国内模型如Doubao-Seed-1.6-thinking-250715在智能体Agent幻觉控制任务上表现出色。此外,报告还分析了模型性价比、效能区间分布,并对代表性模型如Doubao-Seed-1.6-thinking-250715、DeepSeek-R1-0528、GLM-4.5等进行了详细介绍。整体来看,国内大模型在特定任务上已接近国际顶尖水平,但在综合推理能力上仍有提升空间。 适用人群:对大模型技术感兴趣的科研人员、工程师、产品经理及投资者。 使用场景及目标:①了解2025年上半年中文大模型的发展现状与趋势;②评估国内外大模型在不同任务上的表现差异;③为技术选型性能优化提供参考依据。 其他说明:报告提供了详细的测评方法、评分标准及结果分析,确保评估的科学性公正性。此外,SuperCLUE团队还发布了多个专项测评基准,涵盖多模态、文本、推理等多个领域,为业界提供全面的测评服务。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值