替换并平坦 Numpy 数组
Replace and flat Numpy array
我有形状为 (2,1)
的 ndarray。
每个元素都是一个形状为 (4)
的 ndarray
我想制作一个形状为 (2,4)
的数据框
当前形状:
df.shape = (2,1)
df[0].shape = (1,)
df[0][0].shape = (4,)
例如:
df[0][0] = [1 2 2 4]
df[1][0] = [1 1 1 1]
我希望它看起来像这样:
df[0] = [1 2 2 4]
df[1] = [1 1 1 1]
你想要这样的东西吗:
df = pd.DataFrame(a.reshape((2, 4)).T)
df
0 1
0 1 1
1 2 1
2 2 1
3 4 1
或者:
df = pd.DataFrame(a.reshape((2, 4)))
df
0 1 2 3
0 1 2 2 4
1 1 1 1 1
您可以使用另一个数据框重新排列然后将其设置回去,例如:
df2 = pd.DataFrame([df[0][0], df[0][1]])
df = df2
更新:关于@Koren Levenbrown
的评论
df = np.array([df[column][0] for column in df])
是另一种解决方案
看起来你有一个对象 dtype 数组(但为什么叫它 df
?):
In [150]: df = np.empty((2,1),object)
In [151]: df[0,0] = np.array([1,2,2,4])
In [152]: df[1,0] = np.array([1,1,1,1])
In [153]: df
Out[153]:
array([[array([1, 2, 2, 4])],
[array([1, 1, 1, 1])]], dtype=object)
In [154]: df.shape
Out[154]: (2, 1)
In [155]: df[0].shape
Out[155]: (1,)
In [156]: df[0,0].shape
Out[156]: (4,)
np.concatenate
(或 stack
派生之一)可以连接 list/iterable 个数组,前提是它们的大小匹配。
stack
直接应用于 df
不起作用,因为它是 (2,1) 形状的:
In [157]: np.stack(df)
Out[157]:
array([[array([1, 2, 2, 4])],
[array([1, 1, 1, 1])]], dtype=object)
但是如果我们首先拆解(或挤压)数组,那么它是 (2,) 形状:
In [158]: np.stack(df.ravel())
Out[158]:
array([[1, 2, 2, 4],
[1, 1, 1, 1]])
我有形状为 (2,1)
的 ndarray。
每个元素都是一个形状为 (4)
的 ndarray
我想制作一个形状为 (2,4)
当前形状:
df.shape = (2,1)
df[0].shape = (1,)
df[0][0].shape = (4,)
例如:
df[0][0] = [1 2 2 4]
df[1][0] = [1 1 1 1]
我希望它看起来像这样:
df[0] = [1 2 2 4]
df[1] = [1 1 1 1]
你想要这样的东西吗:
df = pd.DataFrame(a.reshape((2, 4)).T)
df
0 1
0 1 1
1 2 1
2 2 1
3 4 1
或者:
df = pd.DataFrame(a.reshape((2, 4)))
df
0 1 2 3
0 1 2 2 4
1 1 1 1 1
您可以使用另一个数据框重新排列然后将其设置回去,例如:
df2 = pd.DataFrame([df[0][0], df[0][1]])
df = df2
更新:关于@Koren Levenbrown
的评论df = np.array([df[column][0] for column in df])
是另一种解决方案
看起来你有一个对象 dtype 数组(但为什么叫它 df
?):
In [150]: df = np.empty((2,1),object)
In [151]: df[0,0] = np.array([1,2,2,4])
In [152]: df[1,0] = np.array([1,1,1,1])
In [153]: df
Out[153]:
array([[array([1, 2, 2, 4])],
[array([1, 1, 1, 1])]], dtype=object)
In [154]: df.shape
Out[154]: (2, 1)
In [155]: df[0].shape
Out[155]: (1,)
In [156]: df[0,0].shape
Out[156]: (4,)
np.concatenate
(或 stack
派生之一)可以连接 list/iterable 个数组,前提是它们的大小匹配。
stack
直接应用于 df
不起作用,因为它是 (2,1) 形状的:
In [157]: np.stack(df)
Out[157]:
array([[array([1, 2, 2, 4])],
[array([1, 1, 1, 1])]], dtype=object)
但是如果我们首先拆解(或挤压)数组,那么它是 (2,) 形状:
In [158]: np.stack(df.ravel())
Out[158]:
array([[1, 2, 2, 4],
[1, 1, 1, 1]])