我正在编写一个Python脚本,我想生成一个带有变量定义的字符串,该变量是一个numpy数组。我希望将其写入外部文件或屏幕,而不是打印/写入整个数组。
为了说清楚,我有:
import numpy as np
normalization = np.arange(4, 11, 0.1)
我想获得:
normalization_string = 'np.arange(4, 11, 0.1)'
无需手动编写,但当然可以指定从变量标准化
生成字符串。
有没有一种简单的方法来生成该字符串?
最佳答案
通常你不能,因为变量根本不知道(因为变量不关心)它是如何创建的。
例如,在您的情况下 np.arange
只是一个函数。它返回一个np.ndarray
,但是有多种方法可以创建numpy.ndarray
:
>>> import numpy as np
>>> np.arange(4, 5, 0.1)
array([ 4. , 4.1, 4.2, 4.3, 4.4, 4.5, 4.6, 4.7, 4.8, 4.9])
>>> np.arange(40, 50) / 10.
array([ 4. , 4.1, 4.2, 4.3, 4.4, 4.5, 4.6, 4.7, 4.8, 4.9])
>>> np.array(range(40, 50, 1)) / 10.
array([ 4. , 4.1, 4.2, 4.3, 4.4, 4.5, 4.6, 4.7, 4.8, 4.9])
>>> np.linspace(4, 4.9, 10)
array([ 4. , 4.1, 4.2, 4.3, 4.4, 4.5, 4.6, 4.7, 4.8, 4.9])
它们都创建相同的数组。
我的建议:
只需保护运行之间发生变化的参数,例如,如果您想修改“步骤”:
step = 0.1
arr = np.arange(4, 11, step)
# do something with arr
res = ... # the result
# safe only the "step" and "res".
print('np.arange(4, 11, {})'.format(step)) # creating a string
如果开始、停止和步骤不同:
start = 4
stop = 11
step = 0.1
arr = np.arange(start, stop, step)
# do something with arr
res = ... # the result
# safe "start", "stop", "step" and "res".
print('np.arange({}, {}, {})'.format(start, stop, step)) # or create the string
我添加了 print
主要是因为您明确要求提供字符串表示形式。
关于python - 在 Python 中创建一个带有变量定义的字符串(nympy.arange 对象),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44484895/