Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中添加列Numpy数组_Python_Numpy - Fatal编程技术网

在python中添加列Numpy数组

在python中添加列Numpy数组,python,numpy,Python,Numpy,我对python非常陌生,也非常熟悉R,但我的问题很简单,使用Numpy数组: 注意: 我有一个维数为100,2的浮点型数组X,我想添加第三列,最好是添加到一个新的维数为100,3的Numpy数组中,这样,对于X数组中的每一行,第三列=col1^2 我的理解是Numpy阵列通常是固定尺寸的,所以我可以创建一个新的dim 100x3阵列,我只是不知道如何使用Numpy阵列 谢谢 生成一个形状为100,2的数组,用2填充。 a=np.full100,2,2 计算第一列的平方,这将是一个一维数组。 平

我对python非常陌生,也非常熟悉R,但我的问题很简单,使用Numpy数组:

注意:

我有一个维数为100,2的浮点型数组X,我想添加第三列,最好是添加到一个新的维数为100,3的Numpy数组中,这样,对于X数组中的每一行,第三列=col1^2

我的理解是Numpy阵列通常是固定尺寸的,所以我可以创建一个新的dim 100x3阵列,我只是不知道如何使用Numpy阵列

谢谢

生成一个形状为100,2的数组,用2填充。 a=np.full100,2,2 计算第一列的平方,这将是一个一维数组。 平方=a[:,0]**2 将一维数组连接到, 首先需要通过重塑-1,1将其转换为形状为100,1的二维棱柱 c=np.连接A,平方。重塑-1,1,轴=1
轴=1的追加应该有效

a=np.零5,2 b=np.ones 5,1 printnp.附录A,b,轴=1 这应返回:

[[0,0,1], [0,0,1], [0,0,1], [0,0,1], [0,0,1]] 一种方法是创建一个新数组,然后将其连接起来。例如,假设M当前是您的数组

可以将col1^2计算为C=M[:,0]**2,我将其解释为第1列的平方,而不是第1列与第2列中的值的幂的乘积。C现在将是一个形状为100的数组,因此我们可以使用C=np对其进行重塑。展开_dimsC,1将创建一个长度为1的新轴,因此我们的新列现在具有形状为100,1。这一点很重要,因为我们希望两个数组在连接时具有相同的维数

这里的最后一步是使用np.concatenate连接它们。总之,我们的结果如下所示

C = M[:, 0] ** 2
C = np.expand_dims(C, 1)
M = np.concatenate([M, C], axis=1) #third row will now be col(1) ^ 2
如果你是那种喜欢在一条线上做事的人,你必须:

M = np.concatenate([M, np.expand_dims(M[:, 0] ** 2, 0)], axis=1)
话虽如此,我还是建议看看熊猫,在我看来,它更自然地支持这些行为。在熊猫身上,它会是

M["your_col_3_name"] = M["your_col_1_name"] ** 2

其中M是一个数据帧。

正如您所看到的,尽管nArray是固定维的,就像元组和字符串是固定维的一样,它们的值可以被覆盖,并且旧数组最终会被垃圾收集,但这是有效的。因为上面的Pandas数组的工作方式与R更为相似。同样,如果我想将相同列空间的行附加numpy数组连接起来,即如果a=100,3,B=50,3将是np。concatenateA,B,axis=1给我一个维度为150,3的数组?concatenateA,B,axis=0将执行此任务,axis=1将失败,因为所有输入数组在其他轴中需要相同的形状。。。请注意,在A,Bnp周围缺少括号。zeroes100,3使用所需形状生成浮点数组默认数据类型。将np.0和np.1放在枕头下,以备将来使用。