我正在尝试将元素插入到一个空的 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] 删除。
我来说两句