小编pr0*_*n8r的帖子

如何在numpy数组上进行条件数组运算?

我试图更好地掌握numpy数组,所以我有一个示例问题要询问它们:

假设我有一个名为a的numpy数组.我想在一个操作上执行一个操作,使其中的所有值递增,小于0,其余部分单独留下.例如,如果我有:

a = np.array([1,2,3,-1,-2,-3])
Run Code Online (Sandbox Code Playgroud)

我想回来:

([1,2,3,0,-1,-2])
Run Code Online (Sandbox Code Playgroud)

什么是最紧凑的语法?

谢谢!

python numpy

12
推荐指数
2
解决办法
2万
查看次数

如何通过numpy数组最大化效率?

我刚刚开始知道numpy,我对它的ndarray中的内存访问类C效率的说法印象深刻.我想看看这些和pythonic列表之间的区别对于我自己,所以我进行了快速计时测试,在没有它的情况下执行一些相同的简单任务numpy.正如预期的那样,Numpy在数组的分配和算术运算中将常规列表的数量超出了一个数量级.但是这两段代码在两个测试中都相同,使用常规列表大约需要1/8秒,而numpy则需要2.5秒多一点:

file = open('timing.log','w')
for num in a2:
    if num % 1000 == 0:
        file.write("Multiple of 1000!\r\n")

file.close()
Run Code Online (Sandbox Code Playgroud)

有谁知道为什么会这样,如果有其他语法我应该用于这样的操作,以更好地利用ndarray可以做什么?

谢谢...

编辑:回答韦恩的评论......我反复和按照不同的顺序对他们进行计时,每次得到几乎相同的结果,所以我怀疑这是另一个过程.我放

start = time()
Run Code Online (Sandbox Code Playgroud) 在numpy导入之后在文件的顶部然后我有类似的语句
print 'Time after traversal:\t',(time() - start)
Run Code Online (Sandbox Code Playgroud) 始终.

python performance numpy

7
推荐指数
3
解决办法
3370
查看次数

具有numpy数组的Pythonic垃圾收集如何附加和删除?

我正在尝试调整在计时器上更新的绘图代码(matplotlib)的基础结构,从使用绘图数据的Python列表到使用numpy数组.我希望能够尽可能地缩短绘图的时间步长,并且由于数据可能会达到数千个点,如果我不能,我会开始快速失去宝贵的时间.我知道numpy数组对于这类事情是首选,但我无法弄清楚何时需要像Python程序员一样思考,何时需要像C++程序员一样思考,以最大限度地提高内存访问效率.

它在scipy.org文档中说append()函数,它返回附加在一起的数组的副本.所有这些副本都能正确收集垃圾吗?例如:

import numpy as np

a = np.arange(10)
a = np.append(a,10)
print a
Run Code Online (Sandbox Code Playgroud)

这是我对C++级别的内容的阅读,但如果我知道我在说什么,我就不会问这个问题,所以如果我错了请纠正我!= P

首先分配10个整数的块,并且符号a指向该块的开头.然后分配一个包含11个整数的新块,总共使用21个整数(84个字节).然后将a指针移动到11-int块的开头.我的猜测是,这会导致垃圾收集算法将10-int块的引用计数减少到零并解除分配.这是正确的吗?如果没有,我如何确保在追加时不会产生开销?

我也不确定如何在使用它时正确删除numpy数组.我的图上有一个重置按钮,只是刷新所有数据并重新开始.当我有名单时,这是使用完成的del data[:].是否有numpy数组的等效函数?或者我应该只说data = np.array([])并指望垃圾收集器为我做的工作?

python arrays garbage-collection memory-management numpy

5
推荐指数
1
解决办法
5605
查看次数

我知道我应该将Python代码保留为79列,但是如何缩进行的延续?

我知道行宽的标准Python约定是79个字符.我知道可以通过多种方式继续行,例如自动字符串连接,括号和反斜杠.似乎没有明确定义的是如何格式化溢出文本.我是否一直将它推回到第1组?到原始线开始的col?到括号的开头(如果适用)?例如,说我有这样的事情:


        self.someLongAttributeName = {'someLongKeyName':'someLongValueName',
                                      'anotherLongKeyName':'anotherLongValueName'}
Run Code Online (Sandbox Code Playgroud)

假设我上面使用的格式符合79个字符的限制,第二行的缩进是否正确?

现在假设上面显示的第一行> 79个字符.在这种情况下应该怎么看?

注意:我知道很多人不同意79个字符的约定.虽然我尊重问题的每一方都有很多利弊,但这次辩论与我的问题无关.我问的是如何遵循惯例,而不是我是否应该遵守,所以请不要在回复中支持放弃它的好处.谢谢.=)

python code-formatting conventions

4
推荐指数
2
解决办法
465
查看次数

如何在LaTeX Beamer演示文稿中顶部对齐“易碎”框架的内容?

所以我是LaTeX的新手。我正在为演示性编程讲座制作演示文稿演示,因此经常examplebox在幻灯片中使用该对象。有人告诉我,只要我有一个包含示例框的框架,就需要使用关键字“易碎”对其进行声明,如下所示:

\begin{frame}[fragile]

我不确切知道这是做什么的,但是我知道我的代码只有在使用它的情况下才会编译。我还从互联网上收集到以下信息:如果要在框架上对内容进行顶部对齐,可以添加“ t”关键字,如下所示:

\begin{frame}[t]

我对LaTeX知之甚少,将两者结合在一起被认为是一种直观的方法,是行不通的。

\begin{frame}[t][fragile]

也没有

\begin{frame}[fragile][t]

我猜想有一个简单的解决方案可以同时使用这两种方法,但是我很难在网上找到正确的答案。谁能阐明一些想法?

谢谢!

latex beamer

4
推荐指数
2
解决办法
6545
查看次数