我有形状为(x,14)的浮点数的numpy数组,我想在每个“行”的末尾增加一个值(向每行不同的值),以便最终结果具有形状(x, 15)。
我们可以假设我在某些列表中有这些值,因此也定义了一部分问题。
如何使用numpy函数?
答案 0 :(得分:1)
定义2d数组和列表:
In [73]: arr = np.arange(12).reshape(4,3)
In [74]: arr
Out[74]:
array([[ 0, 1, 2],
[ 3, 4, 5],
[ 6, 7, 8],
[ 9, 10, 11]])
In [75]: alist = [10,11,12,13]
注意它们的形状:
In [76]: arr.shape
Out[76]: (4, 3)
In [77]: np.array(alist).shape
Out[77]: (4,)
要将alist
与arr
连接起来,它需要具有相同数量的尺寸和相同数量的“行”。我们可以通过添加带有None
惯用法的维度来做到这一点:
In [78]: np.array(alist)[:,None].shape
Out[78]: (4, 1)
现在我们可以在第二个轴上串联:
In [79]: np.concatenate((arr, np.array(alist)[:,None]),axis=1)
Out[79]:
array([[ 0, 1, 2, 10],
[ 3, 4, 5, 11],
[ 6, 7, 8, 12],
[ 9, 10, 11, 13]])
column_stack
的作用相同,请注意每个输入至少为2d(建议阅读其代码。)从长远来看,您应该对尺寸和形状足够熟悉,可以简单地做到这一点concatenate
。
In [81]: np.column_stack((arr, alist))
Out[81]:
array([[ 0, 1, 2, 10],
[ 3, 4, 5, 11],
[ 6, 7, 8, 12],
[ 9, 10, 11, 13]])
np.c_
也可以这样做-但请注意使用[]而不是()。这是索引符号的巧妙用法,方便但容易造成混淆。
np.c_[arr, alist]
np.r_['-1,2,0', arr, alist] # for more clever obscurity