如何将元素添加到空的二维 numpy 数组

猫猫

我正在尝试将元素插入到一个空的 2d numpy 数组中。但是,我没有得到我想要的。

我试过 np.hstack 但它只给了我一个普通的数组。然后我尝试使用 append 但它给了我一个错误。

错误:

ValueError:所有输入数组必须具有相同的维数

randomReleaseAngle1 = np.random.uniform(20.0, 77.0, size=(5, 1))
randomVelocity1 = np.random.uniform(40.0, 60.0, size=(5, 1))
randomArray =np.concatenate((randomReleaseAngle1,randomVelocity1),axis=1)

arr1 = np.empty((2,2), float)
arr = np.array([])

for i in randomArray:
    data = [[170, 68.2, i[0], i[1]]] 
    df = pd.DataFrame(data, columns = ['height', 'release_angle', 'velocity', 'holding_angle']) 
    test_y_predictions = model.predict(df)
    print(test_y_predictions) 
    if (np.any(test_y_predictions == 1)):
        arr = np.hstack((arr, np.array([i[0], i[1]])))
        arr1 = np.append(arr1, np.array([i[0], i[1]]), axis=0) 

print(arr)
print(arr1)

我想得到类似的东西

[[1.5,2.2],
[3.3,4.3],
[7.1,7.3],
[3.3,4.3],
[3.3,4.3]]

然而,我得到

[56.60290125 49.79106307 35.45102444 54.89380834 47.09359271 49.19881675
 22.96523274 44.52753514 67.19027156 54.10421167]
保利

推荐的列表追加方法:

In [39]: alist = []                                                                                          
In [40]: for i in range(3): 
    ...:     alist.append([i, i+10]) 
    ...:                                                                                                     
In [41]: alist                                                                                               
Out[41]: [[0, 10], [1, 11], [2, 12]]
In [42]: np.array(alist)                                                                                     
Out[42]: 
array([[ 0, 10],
       [ 1, 11],
       [ 2, 12]])

如果我们从一个empty((2,2))数组开始

In [47]: arr = np.empty((2,2),int)                                                                           
In [48]: arr                                                                                                 
Out[48]: 
array([[139934912589760, 139934912589784],
       [139934871674928, 139934871674952]])
In [49]: np.concatenate((arr, [[1,10]],[[2,11]]), axis=0)                                                    
Out[49]: 
array([[139934912589760, 139934912589784],
       [139934871674928, 139934871674952],
       [              1,              10],
       [              2,              11]])

请注意,empty这与列表的含义不同[]这是一个真正的 2x2 数组,具有“未指定”值。当我们向其中添加其他数组时,这些值仍然存在。

我可以从一个 0 维的数组开始:

In [51]: arr = np.empty((0,2),int)                                                                           
In [52]: arr                                                                                                 
Out[52]: array([], shape=(0, 2), dtype=int64)
In [53]: np.concatenate((arr, [[1,10]],[[2,11]]), axis=0)                                                    
Out[53]: 
array([[ 1, 10],
       [ 2, 11]])

这看起来更像是列表追加方法。但是为什么首先从 (0,2) 数组开始呢?

np.concatenate接受一个数组列表(或可以组成数组的列表)。我使用了生成 (1,2) 数组的嵌套列表。有了这个,我可以在轴 0 上加入它们。

每个都concatenate创建一个新数组。因此,如果迭代完成,它比列表附加更昂贵。

np.append只需要 2 个数组并进行连接。所以加的不多。hstack在第二个(水平)维度上调整形状和连接。vstack是另一种变体。但他们最终都使用了concatenate.

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章