标签: flatten

如何在Labview中展平(重塑为1D)任意维数组

设A是任意维数的数组(在我的例子中为2或3).如何在不事先知道尺寸数量的情况下展平(重塑为1D)此阵列?

如果我知道尺寸的数量,我可以很容易地获得元素的总数(通过使用"数组大小"功能的组合),然后使用此数字重新形成A到1D.不幸的是,"数组大小"函数本身返回一个数组元素数等于维数的数组,这使我们回到最初的问题.

我已经通过创建一个函数(VI)"解决"了这个问题,该函数返回了3D数组的元素总数(我期望处理的最常见的数组类型),因此我可以将它作为参数提供给重塑功能.问题:它不会接受2D数组,即使算法适用于这样的数组!(似乎在Labview中,数组控件对它们接受的维数是严格的,例如在Matlab中不是这种情况).

一个很好的解决方案是将"数组大小"给出的数组的所有元素相乘以快速获得元素总数的简单方法,而不必将其包装在子VI中.总的来说,是不是有一种简单有效的方法来解决这个问题?应该很标准..

arrays labview flatten

6
推荐指数
1
解决办法
9069
查看次数

Scala:Map.flatten的用例?

Map.flatten上文档说明如下:

将此可遍历集合的映射转换为由这些可遍历集合的元素组成的映射.

我得到了"可遍历集合的地图".例如,这将是一个列表地图.仅凭这个定义,a就有Map[Int, List[Int]]资格了.

但是什么是"这些可穿越集合的元素形成的地图"?这听起来很简单,但我很难让它发挥作用.

文档中提供的示例代码是......嗯......我们应该说,不适用吗?

val xs = List(
           Set(1, 2, 3),
           Set(1, 2, 3)
         ).flatten
// xs == List(1, 2, 3, 1, 2, 3)

val ys = Set(
           List(1, 2, 3),
           List(3, 2, 1)
         ).flatten
// ys == Set(1, 2, 3)
Run Code Online (Sandbox Code Playgroud)

我尝试了一些不同的东西,但它们会产生同样的错误.以下是几个例子:

scala> val m = Map(List(1) -> List(1,2,3), List(2) -> List(4,5,6), List(3) -> List(7,8,9))
m: scala.collection.immutable.Map[List[Int],List[Int]] = Map(List(1) -> List(1, 2, 3), List(2) -> List(4, 5, 6), List(3) -> List(7, 8, 9)) …
Run Code Online (Sandbox Code Playgroud)

dictionary scala flatten

6
推荐指数
1
解决办法
716
查看次数

使用XSLT拆分和展平节点

我不能有任何嵌套的跨度,所以我需要展平它们并连接它们的类属性,这样我就可以跟踪哪些类是父类.

这是一个简化的输入:

<body>
    <h1 class="section">Title</h1>
    <p class="main">
        ZZZ
        <span class="a">
            AAA
            <span class="b">
                BBB
                <span class="c">
                    CCC
                    <preserveMe>
                        eeee
                    </preserveMe>
                </span>
                bbb
                <preserveMe>
                    eeee
                </preserveMe>
            </span>
            aaa
        </span>
    </p>
</body>
Run Code Online (Sandbox Code Playgroud)

这是所需的输出

<body>
    <h1 class="section">Title</h1>
    <p class="main">
        ZZZ
        <span class="a">
            AAA
        </span>
        <span class="ab">
            BBB
        </span>
        <span class="abc">
            CCC
            <preserveMe>
                eeee
            </preserveMe>
        </span>
        <span class="ab">
            bbb
            <preserveMe>
                eeee
            </preserveMe>
        </span>
        <span class="a">
            aaa
        </span>
    </p>
</body>
Run Code Online (Sandbox Code Playgroud)

这是我最接近的(我真的很陌生,所以即使这样做也花了很长时间......)

<xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output omit-xml-declaration="yes" indent="yes"/>
    <xsl:strip-space elements="*"/>

    <xsl:template match="/">
        <p> …
Run Code Online (Sandbox Code Playgroud)

xml xslt split nested flatten

6
推荐指数
1
解决办法
497
查看次数

R (purrr) 展平命名列表以列出并保留名称

也许我遗漏了一些明显的东西,但试图将 R 中的命名列表的命名列表(甚至可能更加嵌套)扁平化为最终一个平面列表。purrr并且rlist似乎有这方面的工具。我怎样才能实现子列表的名称成为扁平化结果列表的名称预加密,例如list1.blist.apurrr?我的实际列表嵌套得更深,具有不同数量的级别和不同级别上的重复名称。最后我执行purrr::map_df(final_list, bind_rows),这似乎删除了所有重复的名称(即使没有,我也不知道原始重复的名称来自哪个分支)。我可以做到这一点,rlist但我希望找到一个tidyverse解决方案(没有什么反对的rlist,但很多人已经tidyverse安装了)。

编辑:

另请注意,rlist::list.flatten()始终会删除除顶部之外的所有级别,同时一次purrr::flatten()删除一个级别,这有时可能是您所需要的。您可以根据需要经常嵌套 purrr::map(.x, .f = rlist::list.flatten) 来实现相同的目的,但它很麻烦而且不美观/可读。

alist <- list(list1 = list(a = 1, b = 2, blist = list(a = 3, b = 4)),
              list2 = list(a = 1, b = 2, blist = list(a = 3, b = 4)))
str(alist)

List of 2
 $ list1:List of 3
  ..$ a    : num 1 …
Run Code Online (Sandbox Code Playgroud)

r nested-lists flatten purrr

6
推荐指数
1
解决办法
2530
查看次数

在 BigQuery 中取消嵌套结构

在 BigQuery 中展平两个数组的结构的正确方法是什么?我有一个如图所示的数据集(struct.destination 和 struct.visitors 数组是有序的 - 即访问者计数专门对应于同一行中的目的地):

在此处输入图片说明

我想重新组织数据,以便为每个独特的出发地和目的地组合计算总访客数。理想情况下,最终结果将如下所示:

在此处输入图片说明

我尝试连续两次使用 UNNEST - 一次在 struct.destination 上,然后在 struct.visitors 上,但这会产生错误的结果(每个目的地都映射到访问者计数数组中的每个值,而它应该只映射到值在同一行):

SELECT
  origin,
  unnested_destination,
  unnested_visitors
FROM
  dataset.table,
  UNNEST(struct.destination) AS unnested_destination,
  UNNEST(struct.visitors) AS unnested_visitors
Run Code Online (Sandbox Code Playgroud)

sql struct flatten google-bigquery google-cloud-platform

6
推荐指数
1
解决办法
5457
查看次数

递归地将“unnest_wider()”应用于所有列,直到不再有嵌套列表列为止?

这个问题的后续问题:是否可以递归应用unnest_wider,直到不再剩下列表列?

我正在使用一个深度嵌套的数据集,其中一个列表列具有单个级别(一次unnest_wider调用即可解决问题);但另一个有 228-237 个不同深度的列表列。我想“分解”整个数据集,使其整洁,所有列都位于层次结构的顶部。

这是一个示例:

structure(list(fullVisitorId = c("2248281639583218707", "8647436381089107732"
), date = c("20170801", "20170801"), visitStartTime = c(1501583974L, 
1501616585L), totals = list(list(visits = 1L, hits = 1L, pageviews = 1L, 
    timeOnSite = NA_integer_, bounces = 1L, transactions = NA_integer_, 
    transactionRevenue = NA_integer_, newVisits = 1L, screenviews = NA_integer_, 
    uniqueScreenviews = NA_integer_, timeOnScreen = NA_integer_, 
    totalTransactionRevenue = NA_integer_, sessionQualityDim = 1L), 
    list(visits = 1L, hits = 1L, pageviews = 1L, timeOnSite = NA_integer_, 
        bounces = 1L, …
Run Code Online (Sandbox Code Playgroud)

r flatten dataframe tidyr purrr

6
推荐指数
1
解决办法
1404
查看次数

Maven:通过展平解决版本而不扩展依赖项

我想在构建后解析所有修订标签,所以我使用展平。我有一个这样的多模块项目:

A (root)
|_B (parent = A, dependencyManagement with version = ${revision}
|_C (parent = B, dependencies declared in dependencyManagement without specifying the version)
Run Code Online (Sandbox Code Playgroud)

问题是在 B 的扁平化 pom 中,问题${revision}没有得到解决。此外,在 C 的扁平化 pom 中,版本仍然丢失,而我希望找到 B 中 dependencyManagement 中声明的版本。

这就是我配置展平的方式:

    <build>
        <plugins>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>flatten-maven-plugin</artifactId>
                <version>1.1.0</version>
                <configuration>
                    <updatePomFile>true</updatePomFile>
                    <flattenMode>resolveCiFriendliesOnly</flattenMode>
                </configuration>
                <executions>
                    <execution>
                        <id>flatten</id>
                        <phase>process-resources</phase>
                        <goals>
                            <goal>flatten</goal>
                        </goals>
                    </execution>
                    <execution>
                        <id>flatten.clean</id>
                        <phase>clean</phase>
                        <goals>
                            <goal>clean</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
Run Code Online (Sandbox Code Playgroud)

我尝试在其中添加此部分<configuration>

<pomElements>
    <dependencyManagement>expand</dependencyManagement>
    <dependencies>expand</dependencies>
</pomElements>
Run Code Online (Sandbox Code Playgroud)

这部分解决了问题,因为它解决了所有版本,但是 pom 变得太冗长,因为它扩展了父级的所有依赖项。所以结果是 C …

java version flatten maven-plugin maven

6
推荐指数
1
解决办法
5050
查看次数

雪花 - 横向不能位于连接的左侧

我有一个变体数据类型,我正在对其执行横向展平,但随后我需要左连接其中一个 json 元素,以从 Snowflake 中的另一个关系表中查找相应 ID 的值。当我这样做时,它会给我错误“横向视图不能位于连接的左侧”,这是没有意义的,因为如果我不包含外部连接,则创建视图,然后在其顶部创建一个附加视图这个视图,它允许我执行左连接。

例子:

create or replace view  my_view
copy grants
as
select 
    rowid as row_id,
    siteData.value:siteID::int as site_id,
    es.site_name AS site_name
from 
    "RAW_DATA" raw, 
    lateral flatten(datamap:data, outer => true) siteData
    LEFT join ext_site es on es.siteid = siteData.value:siteID
;
Run Code Online (Sandbox Code Playgroud)

flatten lateral snowflake-cloud-data-platform

6
推荐指数
1
解决办法
7949
查看次数

Snowflake SQL:如何使用 JSON 对象循环遍历数组,以查找满足条件的项目

对此我很伤脑筋。在 Snowflake 中,我的字段city_info看起来像(对于 3 个样本记录)

[{"name": "age", "content": 35}, {"name": "city", "content": "Chicago"}]
[{"name": "age", "content": 20}, {"name": "city", "content": "Boston"}]
[{"name": "city", "content": "New York"}, {"name": "age", "content": 42}]
Run Code Online (Sandbox Code Playgroud)

我尝试city从中提取一列

Chicago
Boston
New York
Run Code Online (Sandbox Code Playgroud)

我试着把它压平

select *
from lateral flatten(input =>
  select city_info::VARIANT as event
  from data
)
Run Code Online (Sandbox Code Playgroud)

从那里我可以导出该值,但这只允许我对 1 行执行此操作(因此我必须添加limit 1没有意义的内容,因为我的所有行都需要这个)。

如果我尝试对 3 行执行此操作,它会告诉我subquery returns more than one row.

任何帮助表示赞赏!克里斯

sql json flatten snowflake-cloud-data-platform

6
推荐指数
1
解决办法
6270
查看次数

如何合并嵌套在另一个数据帧中的所有数据帧并在一个结果数据帧中生成所有组合?

我有sampledata使用下面的代码复制的数据:

###producing sample data
sampledatain1 <- data.frame(in_1=c(1,2,3,4,5),in_2=c("A","B","C","D","E"),stringsAsFactors = F)
sampledatain2 <- data.frame(in_1=c(6,7,8,9,10),in_2=c("F","G","H","I","J"),stringsAsFactors = F)
sampledatain3 <- data.frame(in_1=c(99,98,97,96,95),in_2=c("Z","Y","X","W","V"),stringsAsFactors = F)
sampledata <- data.frame(row = 1:3,
                    colmerge1 = c("MA","MB","MC"), 
                    colmerge2 = -99:-97,
                    stringsAsFactors = FALSE)
sampledata$df <- list(sampledatain1,sampledatain2,sampledatain3)
Run Code Online (Sandbox Code Playgroud)

我想展平所有嵌套的数据框并将它们组合起来,结果如下desired_data

###reproducing desired data 
library(data.table)
sampledatain1$row <- 1
sampledatain1$colmerge1 <- "MA"
sampledatain1$colmerge2 <- -99

sampledatain2$row <- 2
sampledatain2$colmerge1 <- "MB"
sampledatain2$colmerge2 <- -98

sampledatain3$row <- 3
sampledatain3$colmerge1 <- "MC"
sampledatain3$colmerge2 <- -97

desired_data <- rbindlist(list(sampledatain1,sampledatain2,sampledatain3))
Run Code Online (Sandbox Code Playgroud)

如何使用函数从样本数据生成desired_data来做到这一点?

merge r flatten dataframe data.table

6
推荐指数
1
解决办法
156
查看次数