- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我得到了充满字母数字值的矩阵,不包括小写字母,如下所示:
XX11X1X
XX88X8X
Y000YYY
ZZZZ789
ABABABC
并负责计算每行中的重复次数,然后根据被重复角色的排名计算分数。
I used
{⍺ (≢⍵)}⌸¨ ↓ m
帮我。对于上面的例子,我会得到这样的东西:
X 4 X 4 Y 4 Z 4 A 3
1 3 8 3 0 3 7 1 B 3
8 1 C 1
9 1
这很好,但现在我需要做一个能够将数字与每个字母相乘的函数。我可以使用
⊃
访问第一个矩阵但后来我完全迷失了如何访问其他人。我可以简单地写
⊃w[2]
和
⊃w[3]
等等,但我需要一种方法在一个函数中同时更改每个矩阵。对于这个例子,排名的数组如下:
ZYXWVUTSRQPONMLKJIHGFEDCBA9876543210
所以对于第一个数组
XX11X1X
对应于:
X 4
1 3
所以
X
是数组中的第 3 位,因此它对应于 3,而 1 是第 35 位,所以它是 35。最终得分类似于 (3×104)+(35×103)。我最大的问题不一定是评分部分,而是能够在一个函数中单独访问每个矩阵。所以对于这个嵌套数组:
X 4 X 4 Y 4 Z 4 A 3
1 3 8 3 0 3 7 1 B 3
8 1 C 1
9 1
如果我这样做
arr[1]
它给了我标量
X 4
1 3
和
⍴ arr[1]
没有给我任何确认,所以我可以做
⊃arr[1]
获取矩阵本身并单独访问每一列。这就是我卡住的地方。我正在尝试编写一个函数来对每个矩阵进行数学运算,然后将这些结果保存到一个数组中。我可以轻松地对第一个矩阵进行数学运算,但我不能对所有矩阵都进行数学运算。我使用
{⍺ (≢⍵)}⌸¨ ↓ m
可能犯了一个错误得到这些矩阵。谢谢。
最佳答案
使用您的示例安排:
⎕ ← arranged ← ⌽ ⎕D , ⎕A
ZYXWVUTSRQPONMLKJIHGFEDCBA9876543210
所以现在,我们可以得到索引值:
1 ⌷ m
XX11X1X
∪ 1 ⌷ m
X1
arranged ⍳ ∪ 1 ⌷ m
3 35
虽然您可以先计算中间步骤,但将大部分最终公式包含在 Key 的操作数中要简单得多:
{ ( arranged ⍳ ⍺ ) × 10 * ≢⍵ }⌸¨ ↓m
┌───────────┬───────────┬───────────┬─────────────────┬───────────────┐
│30000 35000│30000 28000│20000 36000│10000 290 280 270│26000 25000 240│
└───────────┴───────────┴───────────┴─────────────────┴───────────────┘
现在我们只需要总结每个:
+/¨ { ( arranged ⍳ ⍺ ) × 10 * ≢⍵ }⌸¨ ↓m
65000 58000 56000 10840 51240
事实上,我们可以将求和与 Key 的应用结合起来,避免双重循环:
{ +/ { ( arranged ⍳ ⍺ ) × 10 * ≢⍵ }⌸ ⍵}¨ ↓m
65000 58000 56000 10840 51240
2⊃
而不是
⊃
获得第二个矩阵——有关详细信息,请参阅
Problems when trying to use arrays in APL. What have I missed? ):
⊃{⍺ (≢⍵)}⌸¨ ↓m
X 4
1 3
我们可以通过归约在左列元素和右列元素之间插入一个函数:
{⍺ 'foo' ⍵}/ ⊃{⍺ (≢⍵)}⌸¨ ↓m
┌─────────┬─────────┐
│┌─┬───┬─┐│┌─┬───┬─┐│
││X│foo│4│││1│foo│3││
│└─┴───┴─┘│└─┴───┴─┘│
└─────────┴─────────┘
所以现在我们只需要修改占位符函数,在排列的项目中查找左边的参数,然后乘以 10 的右边参数的幂:
{ ( arranged ⍳ ⍺ ) × 10 * ⍵ }/ ⊃{⍺ (≢⍵)}⌸¨ ↓m
30000 35000
我们不是仅将其应用于第一个矩阵,而是将其应用于每个矩阵:
{ ( arranged ⍳ ⍺ ) × 10 * ⍵ }/¨ {⍺ (≢⍵)}⌸¨ ↓m
┌───────────┬───────────┬───────────┬─────────────────┬───────────────┐
│30000 35000│30000 28000│20000 36000│10000 290 280 270│26000 25000 240│
└───────────┴───────────┴───────────┴─────────────────┴───────────────┘
现在我们只需要总结每个:
+/¨ { ( arranged ⍳ ⍺ ) × 10 * ⍵ }/¨ {⍺ (≢⍵)}⌸¨ ↓m
65000 58000 56000 10840 51240
但是,这是一种比较迂回的方法,在此仅作引用。
关于mapping - 如何在 Dyalog APL 中操作多个嵌套数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64365127/
如何将任何 Dyalog APL 值转换为可以传递给 ⍎ 的字符向量获得相同的值(value)? 预期如何: x←2 3⍴⍳6 x←1,⊂x x←x,⊂'foo'
有没有办法打开文本编辑器,输入一些 APL 代码,将其保存为文件,然后在 Dyalog 或 MicroAPLX 中打开它以执行代码?或者这就是工作空间? 最佳答案 @Tobia 已经对 APL 给出了
我几周前才开始学习 APL,所以这听起来像是一个新手问题。 让 B是一个字符串,在 APL 术语中可以是标量或向量。如果是标量,⍴B返回 null 而不是我想要的字符串长度。 B←'QR' ⍴B ⍝
在 APL 中进行任意精度(整数)算术的最简单方法是什么? 任何已知的图书馆?或者你应该“内联”操作(以及如何)? 最佳答案 Dyalog APL 在 big 中包含运算符 dfns workspac
我到处寻找一个函数来执行此操作,但给出了一个嵌套向量 A←(5 3 2) (3 9 1) 我想用 B 索引它 B ← 2 1 这样对于 A 中的第一项,将返回第二项。对于 A 的第二项,将返回 3(第
根据http://www.microapl.co.uk/apl/APL1_2.PDF ,¯12和12之间有圆函数。例如,函数1、2和3分别是sin、cos和tan .我在 this reference
APL中是否存在续行符,即表示输入尚未完成并继续解析下一行的字符? 我想要它的原因是输入一个与其形状相似的格式的数组,例如,而不是: Forecast ← 4 6 ⍴ 150 200 100 80 8
大约在 1980 年代我开始使用 APL 时,Jim Weigang 提出了一个将 APL 代码写入文件的音译方案。虽然该方案本身很可靠,但人们可能永远不想用它来编程。我记得的一个音译方案(刚找到它,
我是一名经验丰富的软件工程师,开始研究 APL,为了尽早更好地了解该语言,我想了解为什么该语言向编码人员展示了标量和向量之间的区别。据我所知,在我的学习中,这只会限制灵活性,而不会产生任何好处来弥补它
如何在 APL 中定义普适功能? 我做的是 function←{ (⊃⍣(⍬≡⍴⍵)){the function that apply to scalar}¨⍵ } 我认为应该有更好的方法来做
假设我有一个数组 N ← 0 0 0 1 1 1 0 0 1 , 我如何应用扫描 \实现数组0 0 0 1 2 3 0 0 1 ?+\N给我 0 0 0 1 2 3 3 3 4这不是我想要的。+\¨⊆
我正在尝试开始使用 APL 和任何相关的 IDE、工具、编译器等。我可能需要在本地安装。我也在网上看了APL repl,但是所有的符号似乎都很难打(我什至不知道从哪里开始)。 我想知道我需要安装的任何
我正在尝试学习 APL。以下代码片段来自http://archive.vector.org.uk/art10011550其中指出此代码就像用英语阅读“MUMMY”一样简单! R←((V⍳V)=⍳⍴V)
这是 Dyalog APL 中黄金比例的代码: 1+∘÷⍣=1 我不明白。 “1 加 compose rec 重复等于 1”没有任何意义。 最佳答案 ⍣ 的操作数是 +∘÷(左边)和 =(右边)。它的
我正在使用 Dyalog APL,但我发现某些功能在 gnu-apl 中不可用。这两个 APL 实现与所有其他 APL 实现之间是否有很大差异?最常用的 APL 编译器是什么? 最佳答案 出于所有实际
给定 APL 中的列表,我想检查每个相邻对是否有序。因此,给定 (a0, a1, ..., an),我想计算: (a0 ≤ a1) ∧ (a1 ≤ a2) ∧ .... ∧ (a[n-1] ≤ an)
我需要在 Dyalog APL 中精确工作。我知道 ⎕PP 的值设置了精度,但我无法将其增加到超过 18,因此我无法获得超过 18 位的精度,并且我需要使用大数字进行操作。有什么办法可以提高精度吗?
给定 APL 中的列表,我想检查每个相邻对是否有序。因此,给定 (a0, a1, ..., an),我想计算: (a0 ≤ a1) ∧ (a1 ≤ a2) ∧ .... ∧ (a[n-1] ≤ an)
至少有一种单字母语言(当然是 q)具有用于进程间通信的功能,这是一种在多台计算机上并行执行长时间运行的进程。这些 session 可以在同一台计算机上,也可以在不同大陆的服务器上。 使用 q,我只需启
来自 Java 和 Python 程序员,优雅而强大的 APL 问题解决方案的语法通常冗长令人困惑。我编写的代码可能看起来同样强大,但为了我的理解,我更喜欢具有良好变量名称的变量 block 。哪个是
我是一名优秀的程序员,十分优秀!