我有一系列称为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)
如果我通过使用临时变量顺序执行命令,它可以正常工作.为什么上面的代码不起作用,我如何让它工作?
干杯
我有一个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)
有人能建议一种有效的方法吗?我画的是空白.
我有一个包含许多子目录的目录.在某些子目录中,我有*.asc扩展名的文件和一些*.xdr.
我想创建一个SINGLE tarball/gzip文件来维护目录结构但排除所有带*.xdr扩展名的文件.
我怎样才能做到这一点?
我做了类似的事情,find . -depth -name *.asc -exec gzip -r9 {} +但这个gzips每个*.asc文件单独,这不是我想要做的.
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)
返回
情节.
只有y(x1)的梯度返回正确的结果.这里发生了什么?有没有更好的方法来计算使用numpy的数值导数?
干杯
我正在编写一个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) 我有一些数据,它是两个变量的函数,比方说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数据结构?
我尝试了各种搜索,但找不到一个好的谷歌字符串来显示正确的结果.
我有一个表格的产品
y = x*f(x)
Run Code Online (Sandbox Code Playgroud)
其中f是x的函数,这是未知的.我希望能够区分y与x的区别.有谁知道我怎么做到这一点?
我有一个多维对象数组,例如:
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脚本,我没有写,利用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()方法调用和其他调用.
我有一个数组切片:
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数组.