问题标签 [binary-matrix]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
319 浏览

matlab - 两个矩阵的逐元素二进制值连接

逐个元素,我想将来自不同矩阵的二进制值连接到一个矩阵。

例如,

如何才能做到这一点?

0 投票
1 回答
783 浏览

c++ - 使用 HUGE 二元矩阵的最有效方法?

我有一个巨大的二进制矩阵,比如100000 x 100000

阅读这篇文章http://www.cs.up.ac.za/cs/vpieterse/pub/PieterseEtAl_SAICSIT2010.pdf,我似乎明白记忆和使用二进制矩阵的最佳权衡是使用boost::dynamic_bitsets

由于在“表 2:实现数据结构的程序的相对时间性能”中std::vector<bool>位于最后一个位置,而boost::dynamic_bitset位于第一个位置。

“表 3:实现数据结构的程序的相对内存使用情况”中std::vector<bool>位于第一位置,但boost::dynamic_bitset位于第二位置。

此外,在论文的第 7 页,有以下声明:

“尽管 std::vector 的内存性能令人印象深刻,但其糟糕的时间性能使其无法在大规模应用程序中使用。”

在结论中:

“我们已经证明 boost::dynamic_bitset 在执行速度方面比大多数其他实现要高效得多,而使用 std::vector<char> 的实现在内存效率方面优于其他实现。”

现在就我而言,我的目标机器是XEON PHI
我的目标应用程序是Game Of Life
我已经将二进制矩阵表示为 ROWS x COLS 单元的二进制数组。

我已经尝试了具有 3 种不同配置的代码,使用带有-O3优化标志的 -the icpc编译器来构建它们:

  1. 布尔数组
  2. 布尔数组 + 矢量化,即使用此处描述的数组表示法更改代码
  3. boost::dynamic_bitsets。在这种情况下,我无法使用数组表示法更改代码,因为当我尝试时,我收到以下错误:

    使用std::vector<bool>时出现同样的错误。

观察 100000 x 100000 大小的矩阵的游戏主循环的一次迭代的性能,我发现:解决方案 2的工作速度几乎比解决方案 1快六倍,但出乎意料的是,解决方案 1的工作速度比解决方案 3快两倍。

总之,我有以下问题要问:

  1. 一般来说,存储/使用HUGE MATRIX最有效的数据结构是什么?
  2. 知道我的目标机器是XEON PHI ,我能比“回答 1”做得更好吗?
  3. 是否可以将矢量化应用于vector<bool>boost::dynamic_bitsets

感谢您对特定目标应用程序的回答:生命游戏。
但是在其他情况下使用巨大的二进制矩阵呢?

0 投票
1 回答
500 浏览

javascript - 查找二进制 m × n 矩阵的所有可能组合

我想创建尺寸为 m x n 的图像。我需要创建所有可能的图像,其像素为黑色或白色(目前没有其他颜色)。解决此问题的一种方法是创建字段为 0 或 1 的二进制矩阵,表示黑色和白色。矩阵中的每一行是一个图像,每个字段是图像中的一个像素。

我目前有代码来创建一个 m x n 图像,并为每个像素分配颜色:

例如,这会生成一个全白的图像。我需要找到一种方法来为所有可能的黑白组合循环运行此代码。

1x1 图像很简单,要么全白要么全黑。

2x1 图像将具有以下组合,每一行都是一个图像:

2x2 图像将具有以下组合,每行也是一个图像:

等等。这似乎已经为 Matlab解决了,但我需要一个不使用库的 JavaScript(或任何伪代码,真的)解决方案。

0 投票
0 回答
69 浏览

r - 100 万次 t 检验

我正在使用只有两个组(0 或 1)的多个分组变量(标记)进行 t 检验。在完整的数据中有一百万个分组变量,例如n_obs = 1e+06, nvals=300, 5% NA。

因为对于较大的数据集,整理速度很慢,所以我正在考虑在单独的部分中进行 t 检验,并逐行遍历“g”,以生成 t 检验的每个组件。

我可以“拆分”第一个标记的值,然后得到每个组的总和:

如何“循环”遍历“g”的所有行,获取每个组的“vals”总和,然后是标准差等?

我试图保持功能简单以提高速度。

0 投票
2 回答
6427 浏览

python - Python Pandas:如何从列表列创建二进制矩阵?

我有一个 Python Pandas DataFrame,如下所示:

a, b是表示用户特征列表的字符串

如何将其转换为用户特征的二进制矩阵,如下所示:

我看到了一个类似的问题Creating boolean matrix from one column with pandas但该列不包含列表条目。

我已经尝试过这些方法,有没有办法将两者合并:

pd.get_dummies()

df[1].apply(lambda x: pd.Series(x.split()))

还对创建这种类型的二进制矩阵的不同方法感兴趣!

任何帮助表示赞赏!

谢谢

0 投票
1 回答
2839 浏览

r - R中的双聚类

我想在 R 中的二进制矩阵上应用 byclustering。有一个名为“biclust”的不错的包可用,但它不会显示我想要的所有内容。

我有一个二进制矩阵,如下所示:

我的目标是将其分类(并显示)如下(可能是彩色的):

设置代码:

我应用了“biclust”R 包的 biclust 函数:

事实上,我得到了预期的两个集群:

我可以通过以下方式分别显示集群:

图片

我可以通过以下方式显示整个聚类矩阵(左上角的一个聚类):

图片

到目前为止一切顺利,但我想要:

  1. 显示颜色切换。现在 1 是红色,0 是绿色。
  2. 我想查看原始矩阵的行和列。现在只显示特定集群的行号和列号(使用 drawHeatMap),并且在整个集群矩阵(drawHeatMap2)中没有显示行号和列号。
  3. 我想要一个有序的聚集矩阵。现在只有在 drawHeatmap2 中指定的簇显示在左上角,但是对于矩阵的其余部分,我还希望其他簇从左上角到矩阵的其余部分的右下角很好地排序。

这些更改是否可能(使用“biclust”包)?还是用 R 以另一种方式做更好?

0 投票
1 回答
1227 浏览

algorithm - 生成二进制矩阵的算法

给定两个输入数组 [R1, ..., Rn] 和 [C1, ..., Cn]。我们想要创建一个二进制矩阵 A(大小为 nxn),使得 A 的第 i 列中的元素之和为 Ci,而 A 的第 j 行中的元素之和为 Rj。

我尝试使用贪心算法填充:从左到右填充 1 并递减 Ci 并为每一行执行此操作。但是,它没有用。(另外,然后我尝试按降序对行和列进行排序,但仍然没有用)

0 投票
1 回答
1065 浏览

python - 将多类数组投影到二进制矩阵中

我有一个简单的 numpy 数组(例如[1,4,2,3,1]),并希望将其投影到二进制矩阵中,其中数组中的每个值都映射到矩阵该列中的一个指标。

例如,此数组将映射到如下矩阵:

我可以通过迭代和列表理解来做到这一点,但是有没有优雅的 numpy 解决方案?

0 投票
0 回答
84 浏览

r - 如何将过滤后的多态位点(fasta 格式)转换为 R 中的二进制矩阵?

预先感谢您的帮助...

我想从过滤的多态站点创建一个二进制矩阵。我有 fasta 格式的 WGS 程序集,每个隔离序列一个文件(总共 131 个 fasta 文件)。

例如,fasta 文件包含x 个元素,每个元素的长度不同。使用包 seqinr 读取文件,如下所示,节点数对应于每个文件中的元素数;
fasta1$Node_1_length_179262_cov_53.4208_ID_3720:类“SeqFastadna”在... fasta1$Node_2_length_151612_cov_41.7317_ID_3726:类“SeqFastadna”在...

我还有一个 excel 文档,其中包含 filters_polymorphic_sites(在 wgMLST 分析中发现的多态基因座,所有基因座都被过滤掉了)(由 Gubbins 执行)。例如隔离1:CGTGAGCCGCGG-AGCCAATAGGGTCAGTGCGGTCGCTGCGGGGTGAACGGCGCAAGCTTTGTCACGCCGGATGGAAGTATGGCCCAGAATTGTTTTTTTATGCGGGCGGGGCTGGCACGAGAAACGATGC

隔离 2:CGTGAGCCGCGG-AGCCAATAGGGTCAGTGCGGTCGCTGCGGGGTGAACGGCGCAAGCTTTGTCACACCGGATGGAAGTATGGCCCAGAATTGTTTTTTTATTCGGGCGGGGCTGGCACAAGAAGCGATGC

我更喜欢在 R 中执行此操作,因此如果您可以建议一个 R 包,那将是惊人的,但是欢迎所有建议。

非常感谢!!

0 投票
0 回答
25 浏览

r - R生成没有相同行的二进制矩阵

对于只包含 0 和 1 的矩阵MN如何使不存在相同的行。例如,如果N = 3M = 3,一种解决方案是:

我知道使用一些详尽的置换算法是可行的,但我想有没有更好的解决方案,因为M < 2^N这是常见的情况。