小编use*_*183的帖子

Numpy在哪里功能多种条件

我有一系列称为dists的距离.我想选择两个值之间的dists.我写了以下代码行来做到这一点:

 dists[(np.where(dists >= r)) and (np.where(dists <= r + dr))]
Run Code Online (Sandbox Code Playgroud)

但是,这仅选择条件

 (np.where(dists <= r + dr))
Run Code Online (Sandbox Code Playgroud)

如果我通过使用临时变量顺序执行命令,它可以正常工作.为什么上面的代码不起作用,我如何让它工作?

干杯

python numpy

114
推荐指数
6
解决办法
19万
查看次数

对numpy数组的每n个元素求平均值

我有一个numpy数组.我想创建一个新的数组,它是每个连续三元素的平均值.因此,新阵列将是原始阵列的三分之一.

举个例子:

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

应该返回数组:

 np.array([2,2,2])
Run Code Online (Sandbox Code Playgroud)

有人能建议一种有效的方法吗?我画的是空白.

python numpy average

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

tar/gzip不包括某些文件

我有一个包含许多子目录的目录.在某些子目录中,我有*.asc扩展名的文件和一些*.xdr.

我想创建一个SINGLE tarball/gzip文件来维护目录结构但排除所有带*.xdr扩展名的文件.

我怎样才能做到这一点?

我做了类似的事情,find . -depth -name *.asc -exec gzip -r9 {} +但这个gzips每个*.asc文件单独,这不是我想要做的.

unix linux bash gzip tar

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

numpy梯度函数和数值导数

numpy.gradient函数返回的数组取决于数据点的数量/数据点的间距.这是预期的行为吗?例如:

y = lambda x: x

x1 = np.arange(0,10,1)
x2 = np.arange(0,10,0.1)
x3 = np.arange(0,10,0.01)

plt.plot(x1,np.gradient(y(x1)),'r--o')
plt.plot(x2,np.gradient(y(x2)),'b--o')
plt.plot(x3,np.gradient(y(x3)),'g--o')
Run Code Online (Sandbox Code Playgroud)

返回 ATTACHED 情节.

只有y(x1)的梯度返回正确的结果.这里发生了什么?有没有更好的方法来计算使用numpy的数值导数?

干杯

python gradient numpy numerical-methods

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

属性还是方法?

我正在编写一个python脚本,它根据两个参数计算各种数量,即球体的长半径和短半径.在我看来,我可以写一个球体类来做到这一点.但是,我是面向对象设计的新手,并且想知道你是否有更多经验丰富的人可以帮助我.

实例用参数a和b分别实例化为长半径和短半径,所以我按如下方式设计了类:

class Spheroid:
  def __init__(self,a,b):
    self.longax  = a
    self.shortax = b
Run Code Online (Sandbox Code Playgroud)

我想要计算的数量之一是音量.球状体的体积为4*pi/3*a*b*b.

我的问题是,我在课堂上为此定义一个方法或属性吗?

例如,我可以定义一个方法:

def Volume(self):
  return 4*pi/3 * self.longax * self.shortax * self.shortax
Run Code Online (Sandbox Code Playgroud)

或者我可以使用一个属性:

self.volume = 4*pi/3 * self.longax * self.shortax * self.shortax
Run Code Online (Sandbox Code Playgroud)

我也可以将它包含在init方法中:

class Spheroid:
  def __init__(self,a,b):
    self.longax  = a
    self.shortax = b
    self.volume = 4*pi/3 * a * b * b.
Run Code Online (Sandbox Code Playgroud)

哪个更好用,为什么?一般来说,我什么时候使用方法?何时使用属性?我通常不会关心,但我有很多这些要实现,我想了解OO设计以供将来参考.

谢谢

编辑:

根据Martijn的建议实现属性后,我最终得到了类似的结果:

class Spheroid(object):
  def __init__(self,a,b):
    self.shortax = a
    self.longax  = b
    self.alpha=self.longax/self.shortax

    @property
    def volume(self):
        return (4*np.pi/3) * self.shortax * self.shortax * …
Run Code Online (Sandbox Code Playgroud)

python methods attributes class

6
推荐指数
1
解决办法
584
查看次数

3D数据的最佳数据结构?

我有一些数据,它是两个变量的函数,比方说a和b.

f(a,b)
Run Code Online (Sandbox Code Playgroud)

在数学术语中,我们可以将f视为在3D中观察的表面.问题是,存储这些数据的良好数据结构是什么?我需要绘制f作为常数b和f的函数作为常数a的b的函数.目前我正在使用数组的dict,如下所示:

  f['a1'] = [b1,b2,b3]
Run Code Online (Sandbox Code Playgroud)

但是如果我现在想要将f作为a与b常量的函数绘制,我必须手工重新制作另一个dict:

  f['b1'] = [a1,a2,a3]
Run Code Online (Sandbox Code Playgroud)

这证明非常麻烦,使我的代码不可读.有没有一种很好的方法将这些3D数据存储在一些numpy数据结构中或使用内置的python数据结构?

python numpy data-structures

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

区分具有未知功能的产品 - 同情

我尝试了各种搜索,但找不到一个好的谷歌字符串来显示正确的结果.

我有一个表格的产品

y = x*f(x)
Run Code Online (Sandbox Code Playgroud)

其中f是x的函数,这是未知的.我希望能够区分y与x的区别.有谁知道我怎么做到这一点?

python numpy sympy

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

对象属性的 Numpy 数组

我有一个多维对象数组,例如:

 a = np.array([obj1,obj2,obj3])
Run Code Online (Sandbox Code Playgroud)

对象是具有多个属性的类的实例。假设其中之一是高度,其中之一是长度。要获得相应的多维长度和高度数组,我执行以下操作:

 lengths = np.array([obj1.length,obj2.length,obj3.length])

 heights = np.array([obj1.height,obj2.height,obj3.height])
Run Code Online (Sandbox Code Playgroud)

这开始使我的代码混乱很多。有没有更有效的方法来做到这一点?例如,我有类似的东西

 heights = a.height
Run Code Online (Sandbox Code Playgroud)

记住,但显然它不起作用,因为 a 是我的对象而不是我的对象的数组。但是有没有类似的东西我可以做,既高效又pythonic?我试过类似的东西

 for x in np.nditer(a,flags=['refs_ok']):
    print x.length
Run Code Online (Sandbox Code Playgroud)

看看会发生什么,但它不起作用,因为 nditer 以某种方式返回一个元组。

有任何想法吗?

python arrays numpy

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

vtk.vtkRender()导致seg错误:11

我有一个python脚本,我没有写,利用vtk模块.它适用于我的旧iMac和我的Linux机器.在安装了OS X Mavericks的Macbook Pro上试用它我在渲染过程中遇到了一个seg错误.我已经将错误跟踪到调用vtkRender()方法,这会导致脚本崩溃并出现seg故障11.我真的不知道如何进一步找出bug的确切原因(例如,怎么做我步入使用pdb的方法调用?),任何想法?

最小的程序崩溃如下:

Enthought Canopy Python 2.7.3 | 64-bit | (default, Aug  8 2013, 05:37:06) 
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import vtk
>>> test = vtk.vtkRenderer()
>>> test.Render()
Segmentation fault: 11
Run Code Online (Sandbox Code Playgroud)

更新:我在VirtualBox上安装了Ubuntu,并为上面的例子获得了相同的seg错误,但是我使用vtk模块的python脚本运行正常.

因此,使用随EPD和OS X Mavericks提供的VTK软件包似乎存在问题.知道如何解决这个问题吗?我删除了VTK的所有痕迹并尝试从源代码安装,但我遇到了各种问题,只是在这种情况下导入VTK.

更新:

通过在脚本中的VTK代码中添加一些额外的样板,我可以让它再次工作.确实非常奇怪的行为.在Ubuntu中使用相同的代码和库可以正常工作,但在Mac OS X上它会出现故障,除非我向渲染对象添加一些.Initialize()方法调用和其他调用.

python vtk enthought

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

在NaN之后,matplotlib没有继续行

我有一个数组切片:

array([1.0, 2.0, 3.0, None, 4.0, None, 5.0, None, 6.0, None], dtype=object)
Run Code Online (Sandbox Code Playgroud)

在绘制时看起来像 这个

在None值之后如何让点线/连接线继续?我尝试使用astype将数据类型从对象更改为浮点数,并将None替换为nan的但是没有区别,我也尝试使用np.where(np.isnan())等的掩码数组但是它没有制作差异.我的绘图命令非常简单:

plt.plot(x, array, 'ro--')
Run Code Online (Sandbox Code Playgroud)

其中x是一个numpy数组.

python numpy matplotlib

4
推荐指数
1
解决办法
1791
查看次数