python - 从数组中设置变量
问题描述
我正在处理一些我在做一个项目时得到的数据并编码:
# Parse data from txt file
data = numpy.loadtxt(inFileName + '.txt', skiprows=3)
freq = data[:, 0] # Mirror Frequency (Hz)
sdfreq = data[:, 1] # σ Frequency (Hz)
dist = data[:, 2] # ∆X (m)
sddist = data[:, 3] # σ ∆X (m)
我意识到最后 4 行看起来是重复的,如果我还有 1000 个数据参数,我显然不会重复这样做。我显然可以将它解析成字典,但这会迫使我调用dataset['freq'][0]
而不是简单地调用freq[0]
. 我也可以将它解析成一个对象并调用dataset.freq[0]
,这样会更好。但是,有没有一种方法可以压缩代码并且仍然能够使用freq[0]
(不使用exec()
)?
解决方案
我不确定我是否了解您问题的各个方面,但我认为您走在正确的轨道上。这对你有帮助吗?
import numpy as np
data = np.array([[1,2,3,4],[5,6,7,8]])
def assign(data):
result = []
for i in range(data.shape[1]):
result.append(list(data[:,i]))
return result
freq, sdfreq, dist, sddist = assign(data)
或更短:
freq, sdfreq, dist, sddist = [list(data[:,i]) for i in range(data.shape[1])]
解释:
您可以将列分配给单个变量,而不是将数据解析到字典中:
对于每一列('i in range(data.shape 1 )')返回列 'data[:,i]',就像您手动执行的那样。
洞穴:您需要跟踪列索引,如果您的数据集发生更改,您需要在确切位置插入一个新变量。从长远来看,结构化表格或pandas可能会有所帮助(尤其是在涉及 1000 多列时)。
推荐阅读
- c++ - std::any 自动转换函数
- arrays - SAS 阵列到 Proc SQL
- azure - 是否可以使用 MFA 和单个用户登录提示对 Connect-AzAccount 和 Connect-AzureAD 进行身份验证?
- python - statsmodels:关于 add_constant 的问题
- vba - Excel VBA 下拉框查询选择代码无法提交更新
- apache-flink - 为什么流的顺序与原始文件不同?
- python - 制作机器学习模型后下一步该怎么做?
- python - 如何使用 python 和 jQuery 从托管在服务器中的应用程序将文件下载到本地计算机
- vue.js - 如何将命令行参数传递给 vue.config.js?
- c# - 无法将多个条目插入特定表