我已经成为Python科学程序员已有几年了,随着程序越来越大,我发现自己遇到了一个特定的问题.我是自学成才,因此我从未接受过任何正式的培训,并且花了很多时间在"适当"的Python编码"惯例"上.
无论如何,到目前为止,我发现自己总是创建一个utils.py文件,我将所有已定义的函数存储在我的程序使用的文件中.然后我发现自己将这些功能分组到各自的目的中.我知道分组事物的一种方式当然是使用类,但我不确定我的策略是否违背实际应该使用的类.
假设我有一堆功能大致相同的事情:
def add(a,b):
return a + b
def sub(a,b):
return a -b
def cap(string):
return string.title()
def lower(string):
return string.lower()
Run Code Online (Sandbox Code Playgroud)
现在显然这4个函数可以看作是两个单独的目的,一个是计算,另一个是格式化.这就是逻辑告诉我要做的事情,但我必须解决它,因为我不想初始化对应于类evertime的变量.
class calc_funcs(object):
def __init__(self):
pass
@staticmethod
def add(a,b):
return a + b
@staticmethod
def sub(a, b):
return a - b
class format_funcs(object):
def __init__(self):
pass
@staticmethod
def cap(string):
return string.title()
@staticmethod
def lower(string):
return string.lower()
Run Code Online (Sandbox Code Playgroud)
通过这种方式,我现在将这些方法"组合"成一个很好的包,可以根据它们在程序中的角色更快地找到所需的方法.
print calc_funcs.add(1,2)
print format_funcs.lower("Hello Bob")
Run Code Online (Sandbox Code Playgroud)
然而,话虽如此,我觉得这是一种非常'unpython-y'的做事方式,它只是感觉凌乱.我是想以正确的方式思考这个还是有另一种方法?
我希望通过 numpy 创建一个数组,该数组根据给定数组中的值从一个区间到另一个区间生成一个等距的值。
我明白有:
np.linspace(min, max, num_elements)
Run Code Online (Sandbox Code Playgroud)
但我正在寻找的是想象你有一组价值观:
arr = np.array([1, 2, 4, 6, 7, 8, 12, 10])
Run Code Online (Sandbox Code Playgroud)
当我做:
#some numpy function
arr = np.somefunction(arr, 16)
>>>arr
>>> array([1, 1.12, 2, 2.5, 4, 4.5, etc...)]
# new array with 16 elements including all the numbers from previous
# array with generated numbers to 'evenly space them out'
Run Code Online (Sandbox Code Playgroud)
因此,我正在寻找与 linspace() 相同的功能,但采用数组中的所有元素并创建另一个包含所需元素但与数组中的设置值间隔均匀的数组。我希望我能清楚地说明这一点..
我试图用这个设置实际做的是获取现有的 x,y 数据并扩展数据以在某种意义上拥有更多的“控制点”,这样我就可以从长远来看进行计算。
先感谢您。
我正在寻找一个python方法,它使用索引值而不是实际元素本身迭代列表.代码正是这样做的:
for index in range(len(list)-1):
# do stuff
Run Code Online (Sandbox Code Playgroud)
我正在寻找是否已经有一个功能,或者我应该自己添加它.