如果与另一个数组连接,为什么 numpy 布尔数组会变成整数?
Why does numpy array of booleans change to integers if concatenated with another array?
如果我使用np.concatenate
加入这个1x5数组
array([True , False, False, True , True ])
用这个 1x5 阵列
array([4.753, 1.202, 2.296, 1.668, 3.35 ])
布尔值更改为整数:
array([[1. , 0. , 0. , 1. , 1. ],
[4.753, 1.202, 2.296, 1.668, 3.35 ]])
为什么?我怎样才能在不影响布尔值的情况下连接它们?
理想情况下,输出可以是 pandas DataFrame
一种方法是将各个数组的 dtype 设置为 object
(您只需要其中一个为 object
类型即可生成 object
类型数组)
a = np.array([[True , False, False, True , True]], dtype=object)
b = np.array([[4.753, 1.202, 2.296, 1.668, 3.35]])
np.concatenate([a,b])
array([[True, False, False, True, True],
[4.753, 1.202, 2.296, 1.668, 3.35]], dtype=object)
您也可以在定义数组后使用arr.astype()
将每个数组转换为object
类型。
a.astype(object)
#array([[True, False, False, True, True]], dtype=object)
是这样的吗?
In [445]: import numpy as np
...: import pandas as pd
In [446]: data = {'Booleans': np.array([True, False, False, True, True]),
...: 'Floats': np.array([4.753, 1.202, 2.296, 1.668, 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
您可能会发现此 link 有用:Different ways to create Pandas Dataframe。
如果我使用np.concatenate
加入这个1x5数组
array([True , False, False, True , True ])
用这个 1x5 阵列
array([4.753, 1.202, 2.296, 1.668, 3.35 ])
布尔值更改为整数:
array([[1. , 0. , 0. , 1. , 1. ],
[4.753, 1.202, 2.296, 1.668, 3.35 ]])
为什么?我怎样才能在不影响布尔值的情况下连接它们?
理想情况下,输出可以是 pandas DataFrame
一种方法是将各个数组的 dtype 设置为 object
(您只需要其中一个为 object
类型即可生成 object
类型数组)
a = np.array([[True , False, False, True , True]], dtype=object)
b = np.array([[4.753, 1.202, 2.296, 1.668, 3.35]])
np.concatenate([a,b])
array([[True, False, False, True, True],
[4.753, 1.202, 2.296, 1.668, 3.35]], dtype=object)
您也可以在定义数组后使用arr.astype()
将每个数组转换为object
类型。
a.astype(object)
#array([[True, False, False, True, True]], dtype=object)
是这样的吗?
In [445]: import numpy as np
...: import pandas as pd
In [446]: data = {'Booleans': np.array([True, False, False, True, True]),
...: 'Floats': np.array([4.753, 1.202, 2.296, 1.668, 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
您可能会发现此 link 有用:Different ways to create Pandas Dataframe。