python 使用数组中现有的值在Numpy数组中添加列

kx5bkwkv  于 2023-02-02  发布在  Python
关注(0)|答案(2)|浏览(146)

我一直在尝试向Array中添加一列,该列是同一行中的值的乘积。本示例计算bmi并将它们相加
示例矩阵[体重、身高]

100 1.5
130 1.6

我想要达到的目标矩阵示例[体重、身高、BMI],其中BMI =体重/身高^2

100 1.5 44.4
130 1.6 50.8

我不知道从哪里开始,因为我不是很精通python和numpy。我一直试图创建一个单独的数组,然后附加它,但我没有运气,因为我无法产生我需要的值的数组。
我能做的最好的尝试就是

fbmi = []
fweights = female[:,0]
fheights = (female[:,:1]/100)

for i in range(len(fweights)):
    fbmi.append(np.round(fweights[i]/(fheights[i]**2),2))
print(fbmi)

其给出如下结果:[数组([102.99]),数组([109.77]),数组([136.99])...,数组([127.23]),数组([120.77])]
numpy已在笔记本上的前一步中调用female[]是一个numpy数组

t5fffqht

t5fffqht1#

hstack方法可以在现有数组中添加一列。注意,我们必须先将结果行整形为一列:

import numpy as np

x = [[100,1.5],[130,1.6]]
x = np.array(x)
z = (x[:,0]/(x[:,1]*x[:,1])).reshape(-1,1)
x = np.hstack((x,z))
print(x)

输出:

[[100.           1.5         44.44444444]
 [130.           1.6         50.78125   ]]
zpgglvta

zpgglvta2#

使用简单列切片和np.c_连接新列:

a = np.array([[100, 1.5],
              [130, 1.6]])

a = np.c_[a, a[:, 0] / a[:, 1]**2]

输出:

array([[100.  ,   1.5 ,  44.44],
       [130.  ,   1.6 ,  50.78]])

相关问题