如何访问 heapq 中的顶部元素而不删除(弹出)它 python ?
我只需要检查堆顶部的元素而不弹出它。我怎样才能做到这一点。
我正在使用数据表数据框。如何将数据帧拆分为训练数据集和测试数据集?
\n与 pandas dataframe 类似,我尝试使用train_test_split(dt_df,classes)sklearn.model_selection,但它不起作用并且出现错误。
import datatable as dt\nimport numpy as np\nfrom sklearn.model_selection import train_test_split\n\ndt_df = dt.fread(csv_file_path)\nclasse = dt_df[:, "classe"])\ndel dt_df[:, "classe"])\n\nX_train, X_test, y_train, y_test = train_test_split(dt_df, classe, test_size=test_size)\nRun Code Online (Sandbox Code Playgroud)\n我收到以下错误: TypeError: 列选择器必须是整数或字符串,而不是 <class \'numpy.ndarray\'>
\n我尝试通过将数据帧转换为 numpy 数组来解决方法:
\nclasse = np.ravel(dt_df[:, "classe"])\ndt_df = dt_df.to_numpy()\nRun Code Online (Sandbox Code Playgroud)\n就像这样它可以工作,但是,我不知道是否有一种方法可以train_test_split像 pandas 数据帧一样正常工作。
编辑1: csv文件包含列字符串,并且值是无符号整数。使用print(dt_df)我们得到:
\n | CCC CCG CCU CCA CGC CGG CGU CGA CUC CUG \xe2\x80\xa6 \n---- + --- --- …
简而言之:
如何正确计算std::vector<bool>存储 n 位的内存空间(以字节为单位)?
std::vector<bool> vb(n, false);
int size_bytes = compute_space_memory_in_bytes(vb);
Run Code Online (Sandbox Code Playgroud)
详细信息:
在我的算法中我使用vector<bool>存储 n 位。为了在实践中有效地测量它,我需要知道如何以字节为单位计算空间内存。(理论上它只是 O(n) 位)。
有2点:
如果我们有std::vector<int>,另一个答案的解决方案是:
sizeof(std::vector<int>) + (sizeof(int) * MyVector.size())
由于向量将每个布尔值存储到单个位中
一种潜在的优化涉及合并向量元素,以便每个元素占用一位而不是 sizeof(bool) 字节。
因此,从1和2来看,我尝试的解决方案是:
std::vector<bool> vb(100, false);
auto size_bytes = sizeof(vector<bool>) + vb.size()/8;
std::cout << "Hello, size = " << size_bytes << " bytes!\n";
Run Code Online (Sandbox Code Playgroud)
那是对的吗 ?
编辑:更明确(感谢@PaulMcKenzie 评论):
给定在执行时确定的 n 位。我的问题是在 bool 向量中存储 n 位占用的空间(精确或大约)是多少?
std::vector<bool> vb;
// some processing to get n …Run Code Online (Sandbox Code Playgroud)