Julia 中的 1 元素数组到标量

2024-02-15

将行向量和列向量相乘,我期望结果是标量,但它是一个一维、单元素数组:

julia> [1 2 3] * [4; 5; 6]
1-element Array{Int64,1}:
 32

问题1:这背后的理由是什么?

问题 2:将此视为 Julia 的一个怪癖,我想将 1 元素数组转换为标量。使用 [1] 获取第一个元素是一种选择,但可读性不太好。做到这一点的特殊方法是什么?


每个表达式都可以被执行,所以你可以使用

([1 2 3] * [4; 5; 6])[1]

获得第一个(也是唯一的值)。

这有主要的性能原因:类型稳定性。基本上,在编译语言中,如果不进行大量转换,就无法更改类型。 Julia 更聪明一点,但如果您进行大量转换,那么您的代码会变慢,因为编译器必须保留大量“kruft”,以防万一您的类型错误。因此,通过确保类型稳定性,编译器可以提前知道类型是什么,并进行更多优化。这是其中之一表现技巧 http://docs.julialang.org/en/release-0.4/manual/performance-tips/。事实上,由于多重调度和类型稳定性,Julia 很快并达到了 C 速度,因此应该受到尊重。

Array * Array 给出一个数组。为了使其类型稳定,它必须始终给出一个数组。否则,编译器需要在使用输出的每个地方放置额外的代码来检查该变量是否是数组!因此,您应该将 * 与数组一起使用来取出数组。如果你想得到一个标量,简单的答案是使用dot功能:

dot([1;2;3],[4;5;6])

当然,我可以这么说,但最好知道“为什么”,因为类型稳定性对于高性能代码来说是一个非常重要的想法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Julia 中的 1 元素数组到标量 的相关文章

  • 为什么 Julia 中的“where”语法对换行符敏感?

    在 Stack Overflow 上的另一个问题中 答案包括以下函数 julia gt function nzcols b SubArray T 2 P Tuple UnitRange Int64 UnitRange Int64 where
  • Julia:将数组数组转换为二维数组

    我有一个数组d包含一个浮点数组 julia gt d 99 element Array Array Float64 1 1 我正在尝试将其转换为二维数组 并且我成功地实现了我的目标 data Array Float64 length d l
  • 确定向量中是否存在元素的最有效方法

    我有几种算法取决于确定元素是否存在于向量中的效率 在我看来 这 in 这相当于is element 应该是最有效的 因为它只返回一个布尔值 在测试了几种方法之后 令我惊讶的是 这些方法是迄今为止效率最低的 以下是我的分析 随着向量大小的增加
  • 从向量中删除元素在 R 中出现的时间量

    我想从一个向量中删除元素在另一个向量中出现的时间 就像我要减去它们一样 鉴于我想要删除的元素向量中的每个元素也存在于我想要从中删除的主向量中 a lt c A B B C C C b lt c A B C C a a in b return
  • 如何在 Julia 中进行两个变量数值积分?

    我可以使用 Julia 在 Julia 中进行单变量数值积分quadgk 一些简单的例子 julia gt f x cos x f generic function with 1 method julia gt quadgk f 0 pi
  • 如何在 C++ 中获取两个向量共有的字符?

    我正在尝试比较两个向量对象 并返回一个包含两个向量中出现的所有字符的向量 如果不编写一些非常复杂的手动方法 将第一个向量中的每个字符与第二个向量中的每个字符进行比较 并使用 if 将其添加到第三个向量 如果它们匹配 将返回 我将如何解决这个
  • vector 超出范围后不清除内存

    我遇到了以下问题 我不确定我是否错了或者它是一个非常奇怪的错误 我填充了一个巨大的字符串数组 并希望在某个点将其清除 这是一个最小的例子 include
  • 如何在 R 中的 for 循环内将值存储在向量中

    我正在开始使用 R 但我对以下问题感到非常沮丧 我试图将 for 循环内完成的某些计算的值存储到我之前定义的向量中 问题是如何进行索引 因为for循环迭代代码的次数取决于用户的输入 所以变量i不一定要从1开始 它可以从80开始 for举个例
  • 使用 swig 类型映射将向量> & 从 C++ 方法返回到 python 元组列表

    我在尝试包装一个 C 方法时遇到了很多麻烦 该方法将对向量的常量引用返回到 Python 元组列表 typemap out 我目前有这样的事情 myclass h inlcude
  • 从 x,y 屏幕空间坐标查找 2D 等距网格上的列、行(将方程转换为函数)

    我试图在屏幕空间点 x y 的二维等距网格中找到行 列 现在我几乎知道我需要做什么 即找到上图中红色向量的长度 然后将其与表示网格边界的向量的长度 由黑色向量表示 进行比较 现在我在数学堆栈交换中寻求帮助 以获得用于计算点 x y 与黑色边
  • 在 Julia 中保存和检索字典的正确方法是什么?

    我已经看到 Julia 充分解释了 MAT 文件 这些文件中的结构可以毫无问题地作为字典读取 现在我创建了自己的字典 其结构如下 String String gt Int Int Int 在每个条目上 我可以保存它writedlm它产生了一
  • R 中的整数或双精度列表

    我有一个大约 1000 个整数的列表 我需要能够进行一些数学计算 但它们被困在列表或字符形式中 我怎样才能切换它们以便它们可用 样本数据 gt y 1 1 7 3 1 6 7 1 7 6 5 3 1 3 3 0 6 2 4 9 19 1 9
  • 稀疏向量模板类:如何清理它?

    我不确定这是否是一个好问题 如果不是 请关闭它 我开始写 使用boost coordinate vector作为起点 sparse vector有效实现类似向量接口的模板类 但很稀疏 它实现了所有常见的向量运算和一个迭代集合元素的快速稀疏迭
  • 用线性增加的值填充向量

    我会用线性增加的值填充 初始化一个向量 例如 对于这个向量中的每个元素 我希望下一个是a比以前更多 或者kth元素的值为k a 像这样的东西 float a 1 132 vector
  • 在 gnuplot 中创建仅带有箭头的向量

    如何创建一个没有线条而只有箭头的矢量 有一个名为 nohead 的选项 它删除了箭头的头部 但我想做相反的事情 删除矢量的线并只保留头部 最优选地还能够基于单个数字重新缩放该箭头的大小 找到了一些有用的建议TeX交换 https tex s
  • 如何在 Julia 中转置字符串数组?

    它适用于数字 但不适用于字符串 The 1 2 有效 但是 a b 没有 为什么 以及如何做到这一点 Why a b 不起作用 因为 运算符实际上计算矩阵的 惰性 伴随 请注意 如文档中所述 adjoint https docs julia
  • 在 C++ 头文件中声明向量

    我在制作的 C 类的头文件中的向量声明时遇到一些问题 我的整个头文件如下所示 ifndef PERSON H define PERSON H include Message h include
  • 更快地评估从右到左的矩阵乘法

    我注意到以二次形式评估矩阵运算右到左明显快于左到右在 R 中 取决于括号的放置方式 显然它们都执行相同的计算量 我想知道为什么会这样 这与内存分配有什么关系吗 A 5000 5000 B 5000 2 A matrix runif 5000
  • 通过保留和复制来复制向量,还是通过创建和交换来复制向量更有效? [复制]

    这个问题在这里已经有答案了 我正在尝试有效地复制向量 我看到两种可能的方法 std vector
  • 在类中创建向量然后在函数中使用类对象不起作用

    我有课Employees 我试图让用户插入和删除员工 但它不起作用 向量的大小应为 500 class Employees public int maxx 500 vector

随机推荐

  • 没有 Spring 的 Spring JDBC 模板

    是否有像 Spring JDBC Template 这样的 Java 库 具有相同质量的代码和文档以及类似的数据访问异常层次结构 但不依赖于其他 Spring 模块 根据 core beans context 模块http mvnrepos
  • java程序要求用户输入第二大和最大的数字

    java program that asks user to input a number and print the 1st and 2nd largest numbers import java util Scanner public
  • 类型双关语与联盟成员访问

    按照这个https stackoverflow com a 1812932 1814023 https stackoverflow com a 1812932 1814023 writing one member of union and
  • PHP 将 JSON 数据从 Android 插入 MySQL 数据库

    我有一个 Android 应用程序 它通过 HTTP POST 方法将数据发送到 PHP 脚本 并尝试解析数据以存储到 MySQL 中 Android 应用程序不是我编写的 但我可以访问下面包含的源代码 它发送打包为 JSON 数组的数据
  • 注解:通过注解限制对类的引用

    我认为这是不可能的 但也许我错了 所以我问你 是否可以 如果我定义一个仅接受扩展某些接口或类的类引用的注释 这是可能的 Class
  • 如何模拟第三方React Native NativeModules?

    组件正在导入包含本机模块的库 这是一个人为的例子 import React from react import View from react native import Answers from react native fabric e
  • foreach 中的 Stringbuilder 比 for 和 String.Join() 中的 Stringbuilder 在集合上更糟糕?

    在这里看到一个关于连接字符串的问题 我做了一些测试 并了解到在 foreach 中连接字符串比使用 for 循环和使用数组中的索引要慢 由于对数组进行边界检查 for 循环不应该更慢吗 对 strings i 进行边界检查 foreach
  • 将框架转换为库

    我想在 iOS 应用程序中使用下面链接中找到的框架 我让它在模拟器中工作 但经过一番挖掘后 您似乎无法在设备上使用框架 尤其是通过 App Store 分发时 如果我错了 请纠正我 https github com mirek YAML f
  • 提交后,信息应发送至电子邮件[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我的网页上有一个 查询 选项卡 查询选项卡包含以下信息 Name Email Number Details 单击 提交 按钮后 上述详细信息
  • Unity函数可以立即从3D管道访问2D盒子吗?

    在 Unity 中 假设你有一个 3D 对象 当然 获得 AABB 很简单 Unity 有直接的函数 您可能必须以通常的方式 添加渲染器的所有边界框 没有问题 因此 Unity 确实有一个直接功能 可以在每一帧的内部网格 渲染管道之外立即为
  • 外部 SVG 未加载媒体查询

    我目前使用应用了内联样式的外部 svg 但它不会加载样式 最初我使用 img 来包含外部 svg 如下所示 img src https lw com example svg SVG 文件看起来与此类似
  • 如何将 2 个 fftw_complex 数组相乘

    Heading 你好 我正在尝试将两个 fftw complex 类型的数组相乘 我应该怎么做 这是代码 fftw complex rInF gInF bInF fftw complex rOutF gOutF bOutF for int
  • C 程序测量指令的执行时间

    我需要找到执行一条指令或几条指令所需的时间 并以毫秒为单位打印出来 有人可以分享一下这方面的小代码片段吗 谢谢 我需要使用这个方法来衡量在我的项目中执行一些指令所花费的时间 include
  • Python 中取消计时器

    我正在Python中的定时器类上工作 并为其编写了一个简单的测试代码 我的目的是打印 hello world 消息 10 次 然后在迭代完成后取消计时器 问题是我无法取消计时器 并且代码似乎无限地打印 hello world 下面是我的代码
  • sqlite3_bind_text C++ 字符串的 SQLITE_STATIC 与 SQLITE_TRANSIENT

    我有一个返回 c std string 的方法 然后在将其传递到 sqlite3 bind text 之前将其转换为 c str 我的问题是 这应该使用 SQLITE STATIC 还是 SQLITE TRANSIENT sqlite3 b
  • 我可以根据查询在 SSIS for 循环中设置变量吗?

    我有一个在 SSIS 中执行的 SQL 查询 用于将数据加载到 CSV 文件中 如下所示 SELECT FROM SomeTable WHERE SomeDate BETWEEN 1 Jan 2016 AND 31 Dec 2016 AND
  • 在 GPU 上计算平方欧氏距离矩阵

    Let p是第一组位置的矩阵 其中每行给出特定点的坐标 同样 让q是第二组位置的矩阵 其中每行给出特定点的坐标 那么两两平方欧氏距离的公式为 k i j p i q j p i q j where p i 表示i矩阵第 行p and p 表
  • 如何命名 PowerPoint 幻灯片中的对象?

    所以我知道如何使用 VB 命名文本框或 PowerPoint 中的类似对象 但我想知道是否有一种方法可以通过功能区命名对象 PowerPoint 2007 例如 如果我在幻灯片上添加一个文本框 有没有办法为其指定一个名称 有点像 Acces
  • Java/Kotlin 注释处理器:获取注释字段/属性的类型

    例如我有一堂课 class Foo AnnotatedProp var foo Boolean null 我怎样才能得到类型foo我的自定义注释处理器中的属性 在伪中我期望类似的东西 annotatedElement getStringif
  • Julia 中的 1 元素数组到标量

    将行向量和列向量相乘 我期望结果是标量 但它是一个一维 单元素数组 julia gt 1 2 3 4 5 6 1 element Array Int64 1 32 问题1 这背后的理由是什么 问题 2 将此视为 Julia 的一个怪癖 我想