小编MCo*_*Cor的帖子

修改然后在Perl中切片未知大小的2D数组

我知道这里已经涵盖了类似的主题,但是我遇到了一个问题,我认为这是因为我误解了如何在foreach循环的上下文中插入数组切片.我无法弄清楚我哪里出错,所以我正在寻找一些见解.

我有一个行数可变的二维数组.例如:

@2DArray = (['str1', 1, 2, 'E', val1, val2, val3]
            ['str2', 3, 4, 'E', val4, val5, val6]
            ['str4', 5, 6, 'F', val7, val8, val9])   
Run Code Online (Sandbox Code Playgroud)

我想构建一个带有附加列的新数组,只有当它们在第3列中包含字符串'E'时才包含原始数组的一些行.另外,对于我希望在我的新数组中包含的行,我只想要列的一个子集,我希望该子集的顺序不同.最终目标是生成下游脚本所需的正确格式的输出.

这是我尝试这样做的:

my $projName = 'test';

my $i = 1;
my @Newarray
my @Newarray_element;
     foreach (@2DArray) {
         if  (${$_}[3] eq 'E') {
             ${$_}[3] = $i; 
             ${$_}[5] = '+'; 
             @Newarray_element = ("$projName$i", @$_[0,1,2,5,3], 'STR', 11, 11);
             $i++;
             push (@Newarray, \@Newarray_element);
         }

         next;
     }

print (join("\t", @$_), "\n") for @Newarray;
Run Code Online (Sandbox Code Playgroud)

但是,如果我这样做,我得到的是:

#(original) col nums:      0       1    2 …
Run Code Online (Sandbox Code Playgroud)

perl foreach slice multidimensional-array

5
推荐指数
1
解决办法
647
查看次数

Cython:如何包装一个返回C++对象的C++函数?

我正在开发一个Python项目,我希望与已编写的C++包接口.由于我将在本项目的其他部分使用Cython,我更喜欢使用Cython进行换行.

简而言之,我需要包装一个返回自定义类型Bar对象的函数FooBar.

这是Bar.h:

#include <cstddef> // For size_t
#include <vector>

/* data returned by function FooBar()*/
class Bar {
public:
    size_t X;
    std::vector<size_t> Y;      
    std::vector<double> Z;  
    std::vector<double> M;  
    std::vector<size_t> N;  

};


Bar FooBar(const std::vector<double> & O, size_t P, size_t Q);
Run Code Online (Sandbox Code Playgroud)

和PyBar.pyx:

from libcpp.vector cimport vector

cdef extern from "Bar.h":
    cdef cppclass Bar:
        size_t X
        vector[size_t] Y    
        vector[double] Z    
        vector[double] M 
        vector[size_t] N    
    cdef Bar FooBar(const vector[double] & O, size_t P, size_t Q)

cdef class PyBar:
    cdef Bar *thisptr      # hold …
Run Code Online (Sandbox Code Playgroud)

c++ python wrapper cython

5
推荐指数
1
解决办法
1571
查看次数

标签 统计

c++ ×1

cython ×1

foreach ×1

multidimensional-array ×1

perl ×1

python ×1

slice ×1

wrapper ×1