python-如何将numpy记录的数组堆叠起来?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python-如何将numpy记录的数组堆叠起来?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2397字,纯文字阅读大概需要4分钟。
内容图文
![python-如何将numpy记录的数组堆叠起来?](/upload/InfoBanner/zyjiaocheng/676/9c7e46cdec5c4eea99246593e2331c01.jpg)
[此帖子的早期版本标题不正确:“如何在一列numpy记录中添加一列?”早先的标题中提出的问题已经部分为answered,但此答案并不完全是该帖子的早先版本所要求的内容.我重新命名了标题,并对其进行了实质性的编辑,以使区别更加清晰.我还解释了为什么我前面提到的答案不符合我的期望.]
假设我有两个numpy数组x和y,每个数组由r个“记录”(又名“结构化”)数组组成.设x的形状为(r,cx),y的形状为(r,cy).我们还假设x.dtype.names和y.dtype.names之间没有重叠.
例如,对于r = 2,cx = 2,cy = 1:
import numpy as np
x = np.array(zip((1, 2), (3., 4.)), dtype=[('i', 'i4'), ('f', 'f4')])
y = np.array(zip(('a', 'b')), dtype=[('s', 'a10')])
我想“水平”连接x和y以产生具有形状(r,cx cy)的记录z的新数组.此操作完全不应修改x或y.
通常,z = np.hstack((x,y))不会,因为x和y中的dtype不一定匹配.例如,继续上面的示例:
z = np.hstack((x, y))
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-7-def477e6c8bf> in <module>()
----> 1 z = np.hstack((x, y))
TypeError: invalid type promotion
现在,有一个函数numpy.lib.recfunctions.append_fields,看起来它可能会执行与我正在寻找的功能接近的操作,但是我无法从中得到任何帮助:我尝试过的所有操作要么由于错误而失败,要么产生除我尝试获取的以外的内容.
有人可以请我明确显示代码(使用nlrappend_fields或else1),该代码将从上例中定义的x和y生成一个新的记录数组z,等效于x和y的水平串联,并执行所以不修改x或y?
我假设这仅需要一两行代码.当然,我正在寻找不需要构建z的代码,通过遍历x和y可以逐条记录.同样,代码可以假定x和y具有相同的记录数,并且x.dtype.names和y.dtype.names之间没有重叠.除此之外,我正在寻找的代码应该对x和y一无所知.理想情况下,也应该对要连接的数组的数量不了解. IOW,不进行错误检查,我正在寻找的代码可能是函数hstack_rec的主体,以便新数组z将成为结果hstack_rec((x,y)).
1 …虽然我不得不承认,在迄今为止用numpy.lib.recfunctions.append_fields完美记录失败之后,我对如何使用此功能(无论其相关性)感到有点好奇这个帖子的问题
解决方法:
我从不使用recarrays,所以其他人会提出一些建议,但是merge_arrays是否可以工作?
>>> import numpy.lib.recfunctions as nlr
>>> x = np.array(zip((1, 2), (3., 4.)), dtype=[('i', 'i4'), ('f', 'f4')])
>>> y = np.array(zip(('a', 'b')), dtype=[('s', 'a10')])
>>> x
array([(1, 3.0), (2, 4.0)],
dtype=[('i', '<i4'), ('f', '<f4')])
>>> y
array([('a',), ('b',)],
dtype=[('s', '|S10')])
>>> z = nlr.merge_arrays([x, y], flatten=True)
>>> z
array([(1, 3.0, 'a'), (2, 4.0, 'b')],
dtype=[('i', '<i4'), ('f', '<f4'), ('s', '|S10')])
内容总结
以上是互联网集市为您收集整理的python-如何将numpy记录的数组堆叠起来?全部内容,希望文章能够帮你解决python-如何将numpy记录的数组堆叠起来?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。