我正在使用Ruby和BinData gem 实现数据结构.我需要实现一个Choice值.根据BinData文档,可以选择实现:
class MyData < BinData::Record
uint8 :type
choice :data, :selection => :type do
type key #option 1
type key #option 2
end
end
Run Code Online (Sandbox Code Playgroud)
我需要在选择中有一个默认选项:
class MyRecord < BinData::Record
uint8 :type
choice :mydata, :selection => :type do
uint32 0
uint16 1
end
end
Run Code Online (Sandbox Code Playgroud)
如果type不是0或1在上面的代码中,如何处理?
我正在尝试根据数据集中的7个变量(col9-15)中的一个或多个取特定值(35),在我的数据集中有效地创建二进制虚拟变量(1/0),但是我不想测试所有列。
通常,as.numeric是理想的,但我一次只能使它与一列一起工作:
data$indicator <- as.numeric(data$col1 == 35)
Run Code Online (Sandbox Code Playgroud)
知道如何修改上面的代码,以便如果任何一个data$col9- data$col15为“ 35”,那么我的指标变量取1?
谢谢!!!
我想读一个数字,比如一个浮点数,并允许用户查看哪个位模式负责他们的输入.如何允许将变量作为int或数组打印或存储为简单的二进制值而不是0-9或az等?
这不符合我的要求.它改为给出一个数字0-9的int,这显然不是二进制数.
int main(){
cout << "Please enter a float number." << endl;
float number;
cin >> number;
int bits = *((int*) &number);
cout << number << endl;
cout << bits << endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud) 我使用以下代码将n字符从二进制文件复制到char*变量:
std::ifstream is ("write.abc", std::ifstream::binary);
if (is) {
// get length of file:
is.seekg (0, is.end);
int length = is.tellg();
is.seekg (0, is.beg);
char * buffer = new char [length];
std::cout << "Reading " << length << " characters... ";
// read data as a block:
is.read (buffer,length);
std::cout << "length of buffer: "<<strlen(buffer) <<endl;
std::cout << "Content of buffer: "<<buffer <<endl;
.......
Run Code Online (Sandbox Code Playgroud)
我的文件内容:

这是编译的结果:

我的问题如下:我等着:
缓冲长度:13
缓冲内容:abcdefghjklmn
有人可以帮我解释一下结果吗?
试图将Fortran中生成的二进制文件读入Python,它有一些整数,一些实数和逻辑.目前我正确地阅读了前几个数字:
x = np.fromfile(filein, dtype=np.int32, count=-1)
firstint= x[1]
...
Run Code Online (Sandbox Code Playgroud)
(np是numpy).但下一个项目是合乎逻辑的.后来又在实际上再次实施.我该怎么做?
我正在尝试了解此二进制编码器背后的逻辑。
它会自动获取分类变量并对它们进行虚拟编码(类似于sklearn上的一键编码),但是减少的输出列数等于唯一值长度的log2。
基本上,当我使用该库时,我注意到我的虚拟变量仅限于少数唯一值。在进一步研究中,我注意到了这一点@staticmethod,它在分类变量中采用了唯一值len的log2。
我的问题是为什么?我意识到这降低了输出数据的维数,但是这样做的背后逻辑是什么?使用log2如何确定表示数据所需的位数?
def calc_required_digits(X, col):
"""
figure out how many digits we need to represent the classes present
"""
return int( np.ceil(np.log2(len(X[col].unique()))) )
Run Code Online (Sandbox Code Playgroud)
完整的源代码:
"""Binary encoding"""
import copy
import pandas as pd
import numpy as np
from sklearn.base import BaseEstimator, TransformerMixin
from category_encoders.ordinal import OrdinalEncoder
from category_encoders.utils import get_obj_cols, convert_input
__author__ = 'willmcginnis'
[docs]class BinaryEncoder(BaseEstimator, TransformerMixin):
"""Binary encoding for categorical variables, similar to onehot, but stores categories as binary bitstrings.
Parameters
----------
verbose: int
integer indicating …Run Code Online (Sandbox Code Playgroud) binary-data categorical-data dummy-variable one-hot-encoding
这段代码抛出错误:
iex(35)> a = <<18::size(7)>>
<<18::size(7)>>
iex(36)> b = <<100::size(7)>>
<<100::size(7)>>
iex(37)> <<a <> b>>
** (ArgumentError) argument error
Run Code Online (Sandbox Code Playgroud)
为什么这段代码失败了?
如何使用变量连接位串?
(我根据mudasobwa的评论更新为示例)
我有一个 istream,我必须将其读入缓冲区。一旦遇到 eof,我找不到一种方法来找出 read_len 吗?我无法使用 get,因为我的文件没有分隔符。
似乎唯一的选择就是逐个字符地阅读它,这真的是唯一的选择吗?
char buffer[128];
while(is.good()) {
is.read(buffer, sizeof(buffer));
size_t read_len = sizeof(buffer);
if (is.eof()) {
read_len = xxxx;
}
process(buffer, read_len);
}
Run Code Online (Sandbox Code Playgroud) 如何创建一个新的二进制变量来比较现有数据框中的另外两个二进制变量?
对于数据框"dframe":
ID FlagA FlagB
1 28602363 1 0
2 28605734 0 1
3 28608629 1 0
4 28611734 1 0
5 28619822 NA 0
6 28622689 1 1
7 28650295 NA 1
8 28650378 0 1
9 28651602 1 1
10 28656060 1 0
Run Code Online (Sandbox Code Playgroud)
我试图创建列"FlagAB",如果FlagA = 1且FlagB = 0则为1,对于任何其他组合为0,如下所示:
ID FlagA FlagB FlagAB
1 28602363 1 0 1
2 28605734 0 1 0
3 28608629 1 0 1
4 28611734.71 1 0 1
5 28619822 NA 0 0
6 …Run Code Online (Sandbox Code Playgroud) void foo(double a) {
...
}
Run Code Online (Sandbox Code Playgroud)
在main()我传递107.0给foo它作为参数.然后我使用gdb来检查aby 的二进制表示p /t a,这就是我得到的:
$1 = 1101011
Run Code Online (Sandbox Code Playgroud)
这个结果对我来说似乎很奇怪.这是INTEGER 107的二进制表示.但是这里的类型a被定义为double并且我们传递了一个参数107.0.我们知道双精度具有不同的二进制表示形式作为整数.
谁能解释为什么a有一个整数二进制代表而不是双倍?编译器做了什么搞笑的事情?
binary-data ×10
c++ ×3
c ×2
r ×2
binaryfiles ×1
bindata ×1
categories ×1
choice ×1
double ×1
dummy-data ×1
elixir ×1
gcc ×1
gdb ×1
if-statement ×1
indicator ×1
istream ×1
numpy ×1
python ×1
ruby ×1