我有一个包含8位整数的列表,其中每个整数代表一个标志.例如:
qc = [11221427, 23414732, 144443277,...]
Run Code Online (Sandbox Code Playgroud)
我想创建8个新变量,其中第一个变量是所有数字的第一个数字,依此类推.例如:
qc1 = [1,2,1]
qc2 = [1,3,4]
Run Code Online (Sandbox Code Playgroud)
我可以使用以下代码计算它:
qc_str = [str(e) for e in qc]
k,l = 0,0
for item in qc_str:
qc1[k] = int(qc_str[k][l])
qc2[k] = int(qc_str[k][l+1])
qc3[k] = int(qc_str[k][l+2])
qc4[k] = int(qc_str[k][l+3])
qc5[k] = int(qc_str[k][l+4])
qc6[k] = int(qc_str[k][l+5])
qc7[k] = int(qc_str[k][l+6])
qc8[k] = int(qc_str[k][l+7])
k += 1
Run Code Online (Sandbox Code Playgroud)
运行100,000行需要花费大量时间.是否有更好或更快的方式.任何想法将不胜感激.
我正在使用 xarray 将文本文件转换为 netCDF 格式。当我使用 netCDF4 格式和 Python3 时,它将字符串变量存储为字符串,但当我使用 Python2 时,它将它们存储为 n 维字符数组。我试图在编码中设置 dtype='str' 并且没有任何区别。有没有办法使用 Python2 使这些变量具有字符串数据类型?任何想法将不胜感激。
这是我的代码:
import pandas as pd
import xarray as xr
column_names = ['timestamp', 'air_temp', 'vtempdiff', 'rh', 'pressure', 'wind_dir', 'wind_spd']
df = pd.read_csv(args.input_file, skiprows = 1, header=None, names = column_names)
ds = xr.Dataset.from_dataframe(df)
encoding = {'timestamp': {'dtype': 'str'},
'air_temp': {'_FillValue': 9.96921e+36, 'dtype': 'f4'}
}
ds.to_netcdf(op_file.nc, format = 'NETCDF4', unlimited_dims={'time':True}, encoding = encoding)
Run Code Online (Sandbox Code Playgroud)
当我使用 Python3.6 对 op_file.nc 进行 ncdump 时,我得到:
netcdf op_file {
dimensions:
time = …
Run Code Online (Sandbox Code Playgroud)