我正在尝试预分配一个空数组,并同时使用以下代码定义大小为19x5的数据类型:
import numpy as np
arr=np.empty((19,5),dtype=[('a','|S1'),('b', 'f4'),('c', 'i'),('d', 'f4'),('e', 'f4')])
结果有些出乎意料,产生了19 * 5 * 5的数组。但是,尝试:
arr=np.empty((19,1),dtype=[('a','|S1'),('b', 'f4'),('c', 'i'),('d', 'f4'),('e', 'f4')])
给出每行适当的长度(5个字段),显然看起来像一维数组。
当我尝试编写此代码时,仅允许使用以下格式:
np.savetxt(file, arr, delimiter=',', fmt='%s')
这告诉我我正在处理单个字符串。有没有办法获得未展平的19x5形状的结构化数组?
使用savetxt编写此文件时会出现主要问题。我想要一个具有所有5列值的csv文件。由于将其作为字符串处理,因此输出错误。
通常,结构化数组的字段替换2d数组的列。人们通常会向其中加载csv,genfromtxt
并且想知道为什么结果是1d。如您所见,您可以使用化合物制作2d数组dtype
,但是每个元素将具有多个值-
如所指定dtype
。
通常,您使用1d形状初始化该数组,例如(19,)
。
请注意,您必须按字段或元组列表填充值。
我没有使用savetxt
结构化阵列的经验,也无法在这款平板电脑上运行测试。但是可能有一些问题会有所帮助。
savetxt
在数组上进行迭代,然后写入fmt%tuple(row)
,并fmt
根据您的输入进行构建。
我建议尝试-dtype中每个字段fmt='%s %s. %s. %s %s'
的%
格式。查看其文档。我也不知道(19,)数组是否会比(19,1)更好。
尝试格式化数组的元素。对于格式化程序,它们应该看起来像元组。如果没有尝试tolist()
或tuple(A[0])
。
这是几乎可以重复的答案
ab = np.zeros(names.size, dtype=[('var1', 'S6'), ('var2', float)])
np.savetxt('test.txt', ab, fmt="%10s %10.3f")
===================
savetxt
由于元组格式,只能处理一维结构化数组。