如何解决如果与另一个数组连接,为什么 numpy 布尔数组会更改为整数?
如果我使用 np.concatenate
加入这个 1x5 数组
array([True,False,True,True ])
使用这个 1x5 阵列
array([4.753,1.202,2.296,1.668,3.35 ])
布尔值改为整数:
array([[1.,0.,1.,1. ],[4.753,3.35 ]])
为什么?如何在不影响布尔值的情况下连接它们?
理想情况下,输出可以是pandas DataFrame
解决方法
一种方法是将单个数组的 dtype 设置为 object
(您只需要其中一个为 object
类型即可生成 object
类型数组)
a = np.array([[True,False,True,True]],dtype=object)
b = np.array([[4.753,1.202,2.296,1.668,3.35]])
np.concatenate([a,b])
array([[True,True],[4.753,3.35]],dtype=object)
您也可以在定义每个数组后使用 arr.astype()
将它们转换为 object
类型。
a.astype(object)
#array([[True,dtype=object)
,
类似的东西?
In [445]: import numpy as np
...: import pandas as pd
In [446]: data = {'Booleans': np.array([True,True]),...: 'Floats': np.array([4.753,3.35])}
In [447]: df = pd.DataFrame(data)
In [448]: df
Out[448]:
Booleans Floats
0 True 4.753
1 False 1.202
2 False 2.296
3 True 1.668
4 True 3.350
您可能会发现此链接很有用:Different ways to create Pandas Dataframe。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。