如何从Ipython/Jupyter笔记本执行bash命令,将python变量的值作为参数传递,如下例所示:
py_var="foo"
!grep py_var bar.txt
Run Code Online (Sandbox Code Playgroud)
(显然我想要grep foo
而不是文字字符串py_var
)
我正在尝试使用caffe构建一个深度学习模型进行显着性分析(我正在使用python包装器).但我无法理解如何为此目的生成lmdb数据结构.我已经浏览了Imagenet和mnist示例,我知道我应该以格式生成标签
my_test_dir/picture-foo.jpg 0
Run Code Online (Sandbox Code Playgroud)
但在我的情况下,我将用0或1标记每个像素,指示该像素是否显着.这不是图像的单个标签.
如何为每个像素的标签生成lmdb文件?
我想以滑动窗口的方式用pandas dataframe列中的值创建一个系列.例如,如果这是我的数据帧
state
0 1
1 1
2 1
3 1
4 0
5 0
6 0
7 1
8 4
9 1
Run Code Online (Sandbox Code Playgroud)
对于一个3的窗口大小,我想得到一个列表为[111,111,110,100,000 ......]
我正在寻找一种有效的方法(当然,我可以将状态转换为列表,然后滑动列表索引).有没有办法在这里使用熊猫滚动计算?我可以以某种方式在滚动窗口中打印元素吗?
处理器使用 36 位物理地址和 32 位虚拟地址,页框大小为 4 KB。每个页表条目大小为 4 个字节。一个三级页表用于虚拟到物理地址的转换,其中虚拟地址的使用如下:
位 30 - 31 用于索引到第一级页表
位 21 - 29 用于索引到第二级页表
位 12 - 20 用于索引到第三级页表
位 0 - 11 用作偏移量页面内
寻址一级、二级和三级页表的页表项中的下一级页表(或页框)所需的位数分别为?
这是 GATE 2008 中提出的一个问题。
我的分析: 最大页框数 =(物理地址大小)/(页面大小)= 2^36 / 2^12 = 2^24。因此,24 位就足以索引第 3 级页表中的页码。现在我们必须找出第 3 级将有多少页表。它给出了 9 位用于索引到第 3 级页表的情况。所以第 3 级有 2^9 个页表。这意味着 2^32 个虚拟空间包含在 2^9 个页表中,因此每个页表的条目 = 2^32/2^9 = 2^23。因此,l2 页表条目中需要 23 位来索引第三级页表中特定页表的条目。从 L1 页表到 L2 中有 2^9 个页表,我们需要到达这些 2^9 个页表中的任何一个。所以在 L1 中需要 9 位。
这种分析不知何故似乎不正确。我很困惑。有人可以解释这些概念吗?
我正在尝试使用caffe为图像实现像素级二进制分类.对于尺寸为3x256x256的每个图像,我有一个256x256标签数组,其中每个条目都标记为0或1.此外,当我使用下面的代码读取我的HDF5文件时,
dirname = "examples/hdf5_classification/data"
f = h5py.File(os.path.join(dirname, 'train.h5'), "r")
ks = f.keys()
data = np.array(f[ks[0]])
label = np.array(f[ks[1]])
print "Data dimension from HDF5", np.shape(data)
print "Label dimension from HDF5", np.shape(label)
Run Code Online (Sandbox Code Playgroud)
我得到数据和标签维度
Data dimension from HDF5 (402, 3, 256, 256)
Label dimension from HDF5 (402, 256, 256)
Run Code Online (Sandbox Code Playgroud)
我试图将这些数据提供给给定的hdf5分类网络,在训练时,我有以下输出(使用默认求解器,但在GPU模式下).
!cd /home/unni/MTPMain/caffe-master/ && ./build/tools/caffe train -solver examples/hdf5_classification/solver.prototxt
Run Code Online (Sandbox Code Playgroud)
给
Run Code Online (Sandbox Code Playgroud)I1119 01:29:02.222512 11910 caffe.cpp:184] Using GPUs 0 I1119 01:29:02.509752 11910 solver.cpp:47] Initializing solver from parameters: train_net: "examples/hdf5_classification/train_val.prototxt" test_net: "examples/hdf5_classification/train_val.prototxt" test_iter: 250 test_interval: 1000 base_lr: 0.01 …
我有一个生成器函数,我想从另一个函数调用并返回获得的生成器.我可以在这看到两种方法 -
注意,下面的函数是简单的虚函数来说明目的.请不要提出更好的方法来实现这些功能.
方法1def fun_a(n):
for i in range(n):
yield i+10
def fun_b(n):
if n < 0:
yield None
return
yield fun_a(n)
Run Code Online (Sandbox Code Playgroud)
并用它list(list(fun_b(10))[0])
来获取[10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
def fun_b(n):
if n < 0:
yield None
return
for i in fun_a(n):
yield i
Run Code Online (Sandbox Code Playgroud)
然后list(fun_b(10))
可以给我[10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
.
虽然方法1似乎很好,但我不想返回列表列表,因为在其他情况下我返回一个列表而我不想搞砸我的代码.方法2效率低下.
处理这种情况的最佳方法是什么?
使用堆排序可以在Θ(log n)时间内对多少个元素进行排序?
当我们进行堆操作时,为了构建堆,我们需要Θ(n)复杂度,然后执行heapsort O(nlog n).我理解这个概念.但是当谈到我们的问题时,我们甚至无法在Θ(log n)时间内构建一堆n个元素.答案是O(1)考虑输入大小n?
我还看到了一个不同的解释,它将复杂度推导为考虑输入大小logn的Θ(log n/log log n).我也不太关注这种方法.那么哪个是正确的答案?为什么?
我无法理解多级缓存中缓存包含属性的概念。根据我的理解,如果我们有 2 级缓存,L1 和 L2,那么 L1 的内容必须是 L2 的子集。这意味着 L2 必须至少与 L1 一样大。此外,当 L1 中的一个块被修改时,我们必须在 L2 和内存两个地方进行更新。这些概念正确吗?
我想将pandas列的值设置为字符串列表。但是,我这样做没有成功,因为大熊猫将列值视为可迭代值,并且得到了:ValueError: Must have equal len keys and value when setting with an iterable
。
这是MWE
>> df = pd.DataFrame({'col1': [1, 2, 3], 'col2': [4, 5, 6]})
>> df
col1 col2
0 1 4
1 2 5
2 3 6
>> df['new_col'] = None
>> df.loc[df.col1 == 1, 'new_col'] = ['a', 'b']
ValueError: Must have equal len keys and value when setting with an iterable
Run Code Online (Sandbox Code Playgroud)
我试图将设置dtype
为list
using df.new_col = df.new_col.astype(list)
,但这也不起作用。
我想知道什么是正确的方法。
编辑
这里提供的答案:Python的大熊猫插入列表进入细胞使用at …
我使用的内存分析器模块来获取我的Python代码后的内存使用这个答案。但是,我无法解释%memit
magic的输出(或使用@profile
模块中的装饰器的输出或mprof run
就此而言)。
例如,
%memit range(10000)
Run Code Online (Sandbox Code Playgroud)
给我 peak memory: 97.41 MiB, increment: 0.24 MiB
尽管,
%memit xrange(10000)
Run Code Online (Sandbox Code Playgroud)
显示peak memory: 97.46 MiB, increment: 0.00 MiB
。我确实理解xrange
返回一个xrange type
和range()
返回一个列表之间的区别。我在这里使用它们只是为了演示这两个场景。
我的问题是
peak memory
和increment
实际上意味着什么呢?我有一个unordered_set
存储以下结构的
struct match_t{
size_t score;
size_t ci;
};
typedef std::unordered_set<match_t> uniq_t;
Run Code Online (Sandbox Code Playgroud)
现在,我想将的元素存储uniq_t myset;
到向量中,但是这样做时,我只想复制分数而不是整个struct
。我已经看到了使用assign
或分配元素的解决方案back_inserter
。我想知道如何从结构中选择所需的字段。我看不到任何参数assign
或back_inserter
为此目的。
我应该push_back
为向量尝试覆盖方法还是执行其他方法?
编辑1 我是否可以通过使用这些方法中的任何一种而不是循环遍历集合并分配所需的值来提高性能?
struct s{
int a;
struct s b;
};
Run Code Online (Sandbox Code Playgroud)
上面的代码段引发错误 error: field 'b' has incomplete type
而
struct s{
int a;
struct s *b;
};
Run Code Online (Sandbox Code Playgroud)
没有任何错误.我不明白为什么这是指针允许但不是非指针变量!
这不是我的所有代码,而是问题的一部分.
api = tweepy.API(auth)
x = api.exists_friendship(user_a, user_b)
print x
Run Code Online (Sandbox Code Playgroud)
回报
x = api.exists_friendships(user_a, user_b)
AttributeError: 'API' object has no attribute 'exists_friendships'
Run Code Online (Sandbox Code Playgroud)
谁知道为什么?真的会有所帮助!谢谢.