当前位置: 首页 > 面试题库 >

numpy中结构化数组的形状

麻桐
2023-03-14
问题内容

我正在尝试预分配一个空数组,并同时使用以下代码定义大小为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 由于元组格式,只能处理一维结构化数组。



 类似资料:
  • 问题内容: 我有一个字典,需要将其转换为NumPy结构化数组。我正在使用arcpy函数,因此NumPy结构化数组是唯一可以使用的数据格式。 我已经试过了: 但我不断 下面的方法有效,但是很愚蠢,显然不适用于真实数据。我知道有一个更优雅的方法,我只是想不通。 问题答案: 您可以使用: 产量 如果您不想创建元组的中间列表,则可以改用: 在Python2中: 在Python3中: 为什么使用该列表不起作

  • 问题内容: 我正在尝试将二维数组转换为具有命名字段的结构化数组。我希望2D数组中的每一行成为结构化数组中的新记录。不幸的是,我没有尝试过以我期望的方式工作。 我从开始: 我想转换为以下形式: 我尝试过的 这两种方法都尝试将myarray中的每个条目转换为具有给定dtype的记录,因此将插入多余的零。我不知道如何获取它以将每一行转换为一条记录。 另一尝试: 这次不执行任何实际转换。内存中的现有数据只

  • 问题内容: NumPy“结构化数组”,“记录数组”和“ recarray”之间的区别是什么? 该NumPy的文档 暗示,前两个是相同的:如果是这样,这是该对象的首选术语? 同样的文件说,(在页面的底部):你可以找到关于recarrays和结构化阵列(包括两者之间的区别)一些更多的信息在这里。是否有对此差异的简单解释? 问题答案: 记录/记录数组在 https://github.com/numpy/

  • 问题内容: 我有以下数据 我得到一个 到目前为止,很好,我有一个数据结构,可以按列名进行寻址 下一个步骤,问题- 我有一个功能,在输入有地理坐标(的两个向量和当然的),并返回两个阵列和在地图上突出位置(此工程确定)。 我可以使用单独的向量,但是我想添加两个新列和。我的天真尝试 提出了一个,教我说它具有字典的某些特征,但是字典却没有。 我可以做吗?tia 请考虑这不适用于结构化数组或记录数组,大多数

  • 问题内容: 将字段添加到结构化numpy数组的最干净方法是什么?可以破坏性地完成它,还是必须创建一个新数组并在现有字段上进行复制?每个字段的内容是否连续存储在内存中,以便可以高效地进行复制? 问题答案: 如果您使用的是numpy 1.3,则还有numpy.lib.recfunctions.append_fields()。 对于许多安装,您将需要访问它。不允许一个人看到

  • 问题内容: 我知道已经有一个关于此主题的问题(将字段添加到结构化numpy数组的最简洁方法),请参阅 将字段添加到结构化的numpy数组 但是我对那里给出的答案有疑问… 如果您使用的是numpy 1.3,那么还有numpy.lib.recfunctions.append_fields() 我仍然有numpy 1.3,但它无法识别此功能,并且在numpy的文档中也没有找到任何有关此功能的信息。函数发

  • 原文:Structured arrays 介绍 结构化数组其实就是ndarrays,其数据类型是由组成一系列命名字段的简单数据类型组成的。 例如: >>> x = np.array([('Rex', 9, 81.0), ('Fido', 3, 27.0)], ... dtype=[('name', 'U10'), ('age', 'i4'), ('weight', 'f4

  • 问题内容: 我尝试了解如何使用来处理数组(线性代数中的向量)。 在以下示例中,我生成两个 和: 对我来说,和根据线性代数定义具有相同的形状:1列,3列,但不适合。 现在,该 产品: 我有三个不同的输出。 和之间有什么区别?为什么点不起作用? 这些点产品也存在一些差异: 问题答案: 请注意,您不仅在处理一维数组: 因此,是2D阵列。您还可以在:(1,3)的输出中看到这一点,因为(3,)是一个维度,它