实现一个类似于R统计语言的向量数据类型。

rvect的Python项目详细描述


rvect.py是一个Python模块,它定义了一个实现数据类型的类(Rvect) 它模拟用于统计计算的R语言中使用的向量数据类型。在

向量(Rvect对象)上的数学运算在语法上类似,但是 在功能上不同于Python列表上的操作。一般来说 向量应用于向量的每个元素,而不是作为 全部。而将Python列表乘以一个正整数可以扩展长度 在列表中,向量乘以正整数会增加幅值 但不改变向量的长度。在

rvect模块与R-其他Python模块没有任何交互 (例如,RPy)提供该功能。rvect模块只提供另一个模块 Python数据类型,类似于R中的向量,对于某些类型的 计算。在

示例

为了说明Rvect对象的用法,下面的示例对比了操作 在Python列表和Rvect对象上。在

  1. 乘以标量

    >>> [1, 2, 3] * 2
    [1, 2, 3, 1, 2, 3]
    >>> Rvect([1, 2, 3]) * 2
    [2, 4, 6]
    
  2. 标量加法

    ^{pr2}$ 在
  3. 将两个列表或向量相乘

    >>> [1, 2, 3] * [4, 5, 6]
    TypeError
    >>> Rvect([1, 2, 3]) * Rvect([4, 5, 6])
    [4, 10, 18]
    
  4. 添加两个列表或向量

    >>> [1, 2, 3] + [4, 5, 6]
    [1, 2, 3, 4, 5, 6]
    >>> Rvect([1, 2, 3]) + Rvect([4, 5, 6])
    [5, 7, 9]
    
  5. 两个列表或向量上的二进制逻辑运算

    >>> [True, True, False, False] and [True, False, True, False]
    [True, False, True, False]
    >>> list_and( [True, True, False, False], [True, False, True, False] )
    [True, False, False, False]
    >>> Rvect([True, True, False, False]).logical_and( Rvect([True, False, True, False]) )
    [True, False, False, False]
    

注释

  1. 此模块包含几个实现基本列表操作的函数 (例如,and,or,sum,product)在列表或元组上,除了类(Rvect) 为这些函数和其他函数定义重载运算符。在

  2. 然而R向量的元素必须都是同一类型的,Rvect类有 没有这样的约束–Rvect元素可以是任何类型的,就像Python列表一样。这个 但是,强制到类的多个方法都包含特定于类的元素。在

  3. 因为Python不允许一个类定义自己的优not_u方法,所以命令

    not Rvect()
    

    不能像预期的那样工作(也就是说,不像R中那样)。相反,有一个名为

    .logical_not()
    

    必须改为调用的Rvect对象。在

  4. 因为Python实现了逻辑二进制中缀运算“and”、“or”和“xor” 通过对每个对象调用非零或len,然后执行布尔逻辑 不能使用二进制对象的逻辑组合, “or”和“xor”中缀运算符。相反,定义了以下函数

    .logical_and(Rvect1, Rvect2, ...)
    .logical_or(Rvect1, Rvect2, ...)
    .logical_xor(...)
    
  5. 与二进制相对应的特殊方法 中缀运算符“&;”、“|”和“^”用于二进制比较,而不是逻辑比较。在R中, 然而,这些中缀运算符形成逻辑比较。因此,特别 方法已实现,以便将参数转换为布尔值,并且 因此对应于逻辑运算符,因此操作类似于等效运算符 R运算符。因此,对于Rvects a和b,以下两个表达式是等价的

    a.logical_and(b) a & b
    

    两者都返回布尔向量。根据前面的注释,这些是not等价于

    a and b
    

    返回一个布尔值。在

  6. 此模块中的'list_...()'函数允许对多个列表进行操作,而 为Rvect实例实现的二进制中缀数学运算符只允许 对两个对象进行操作。例如,多个列表可以与

    list_sum(list1, list2, list3,...)
    

    但是,'list_...()'函数的参数必须都是相同的列表 长度,而Rvect方法的参数可能是其他Rvect对象、列表, 或者标量。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
并行处理java。util。同时发生的叉子在游泳池里。常见的并行性准则,用于选择正确的并行度大小   java如何将空白字符追加到指定长度?   安卓应用程序中出现错误,SSLHandshakeException,找不到证书路径的信任锚点   java如何使用JUnit Mockito验证检查方法是否未被调用   java如何使用不同的@RequestMapping解析多个控制器中的静态页面   Selenium中的javascript需要验证搜索结果   访问数据库SQLiteopenHelper方法时java应用程序崩溃(nullpointerexception)   在二叉树中验证最小堆时出现java空指针异常   Java 7的SSL连接失败   java用RestEasyWebTarget替换ProxyFactory不起作用   在Java应用程序中单击“否”按钮后,数组程序冻结(无响应)   数组中的前缀Java初学者前进和   Java HTML解析器,包括脚本标记和LineNumberReader   在java中为长类型数字加前导零   正则表达式无法映射正则表达式java。lang.IllegalArgumentException:模式段中捕获组的数量