numpy 沿轴连接不适用于生成的数组
numpy concatenation along axis is not working with generated arrays
当我们沿轴连接一维数组和二维数组时,我们可以产生这样的连接数组。
a = np.c_[np.array([10,12]),[np.array([1,2,3]),np.array([2,3,4])]]
array([[10, 1, 2, 3],
[12, 2, 3, 4]])
我正在尝试对具有给定 1d array.Somehow 连接的生成的 2d nan 数组做同样的事情 working.I 认为生成 nan 时的问题 arrays.What 是这个的原因?
tmp = np.array([280, 362, 236, 239, 336, 347, 238, 327, 369, 238, 324, 264, 280,
284, 347, 265, 303, 276, 261, 274, 353, 260, 280, 240, 312, 239,
314, 319, 238, 324, 322, 238, 226, 294, 280, 276, 306, 265, 203,
292, 261, 265, 284, 260, 184, 294, 312, 226, 284, 319, 238, 281,
322, 180, 284, 294, 253, 282, 306, 194, 282, 292, 246, 279, 284,
205])
tmp2 = np.array([7, 7, 6, 7, 7, 6, 7, 7, 6, 7, 7, 6, 7, 7, 6, 7, 7, 6, 7, 7, 6, 7,
7, 6, 7, 7, 6, 7, 7, 6, 7, 7, 6, 7, 7, 6, 7, 7, 6, 7, 7, 6, 7, 7,
6, 7, 7, 6, 7, 7, 6, 7, 7, 6, 7, 7, 6, 7, 7, 6, 7, 7, 6, 7, 7, 6])
nans = [ np.ones(i)*np.nan for i in tmp2]
concat = np.c_[tmp,nans]
输出
array([[280, array([nan, nan, nan, nan, nan, nan, nan])],
[362, array([nan, nan, nan, nan, nan, nan, nan])],
[236, array([nan, nan, nan, nan, nan, nan])],
[239, array([nan, nan, nan, nan, nan, nan, nan])],
[336, array([nan, nan, nan, nan, nan, nan, nan])],
[347, array([nan, nan, nan, nan, nan, nan])],
....
预期输出
array([[280,nan, nan, nan, nan, nan, nan, nan],
[362,nan, nan, nan, nan, nan, nan, nan],
[236,nan, nan, nan, nan, nan, nan],
[239,nan, nan, nan, nan, nan, nan, nan]
....
])
我会用这样的东西,如果性能不是那么重要,它会工作得很好。
output = []
for i, k in zip(tmp, tmp2):
nans = np.ones(k) * np.nan
output.append(np.concatenate([np.array([i]),nans]))
print(output)
你的代码失败的原因是 Numpy 不支持“锯齿状”
数组(每行中有不同数量的元素)。
您可以根据需要添加任意数量的 NaN 列(每行中的数字相同),
执行:
n = 5 # How many NaN columns to add
tmp = np.array([280, 362, 236, 239])
result = np.c_[tmp, np.full((tmp.size, n), np.nan)]
结果是:
array([[280., nan, nan, nan, nan, nan],
[362., nan, nan, nan, nan, nan],
[236., nan, nan, nan, nan, nan],
[239., nan, nan, nan, nan, nan]])
当我们沿轴连接一维数组和二维数组时,我们可以产生这样的连接数组。
a = np.c_[np.array([10,12]),[np.array([1,2,3]),np.array([2,3,4])]]
array([[10, 1, 2, 3],
[12, 2, 3, 4]])
我正在尝试对具有给定 1d array.Somehow 连接的生成的 2d nan 数组做同样的事情 working.I 认为生成 nan 时的问题 arrays.What 是这个的原因?
tmp = np.array([280, 362, 236, 239, 336, 347, 238, 327, 369, 238, 324, 264, 280,
284, 347, 265, 303, 276, 261, 274, 353, 260, 280, 240, 312, 239,
314, 319, 238, 324, 322, 238, 226, 294, 280, 276, 306, 265, 203,
292, 261, 265, 284, 260, 184, 294, 312, 226, 284, 319, 238, 281,
322, 180, 284, 294, 253, 282, 306, 194, 282, 292, 246, 279, 284,
205])
tmp2 = np.array([7, 7, 6, 7, 7, 6, 7, 7, 6, 7, 7, 6, 7, 7, 6, 7, 7, 6, 7, 7, 6, 7,
7, 6, 7, 7, 6, 7, 7, 6, 7, 7, 6, 7, 7, 6, 7, 7, 6, 7, 7, 6, 7, 7,
6, 7, 7, 6, 7, 7, 6, 7, 7, 6, 7, 7, 6, 7, 7, 6, 7, 7, 6, 7, 7, 6])
nans = [ np.ones(i)*np.nan for i in tmp2]
concat = np.c_[tmp,nans]
输出
array([[280, array([nan, nan, nan, nan, nan, nan, nan])],
[362, array([nan, nan, nan, nan, nan, nan, nan])],
[236, array([nan, nan, nan, nan, nan, nan])],
[239, array([nan, nan, nan, nan, nan, nan, nan])],
[336, array([nan, nan, nan, nan, nan, nan, nan])],
[347, array([nan, nan, nan, nan, nan, nan])],
....
预期输出
array([[280,nan, nan, nan, nan, nan, nan, nan],
[362,nan, nan, nan, nan, nan, nan, nan],
[236,nan, nan, nan, nan, nan, nan],
[239,nan, nan, nan, nan, nan, nan, nan]
....
])
我会用这样的东西,如果性能不是那么重要,它会工作得很好。
output = []
for i, k in zip(tmp, tmp2):
nans = np.ones(k) * np.nan
output.append(np.concatenate([np.array([i]),nans]))
print(output)
你的代码失败的原因是 Numpy 不支持“锯齿状” 数组(每行中有不同数量的元素)。
您可以根据需要添加任意数量的 NaN 列(每行中的数字相同), 执行:
n = 5 # How many NaN columns to add
tmp = np.array([280, 362, 236, 239])
result = np.c_[tmp, np.full((tmp.size, n), np.nan)]
结果是:
array([[280., nan, nan, nan, nan, nan],
[362., nan, nan, nan, nan, nan],
[236., nan, nan, nan, nan, nan],
[239., nan, nan, nan, nan, nan]])