簡體   English   中英

如何將大小為 1 的 numpy 數組插入到空的 numpy 數組中?

[英]How to insert numpy arrays of size 1 into an empty numpy array?

我正在定義兩個 NumPy 數組:

PREtrain_labels = np.asarray([inpLblsArray[0:80]])
train_labels = np.array([])
TRstore = 0
i = 0

while i < len(train_images):
  TRstore = np.asarray([PREtrain_labels.item(i)])
  np.append(train_labels, TRstore)
  i = i + 1

在這里,我有一個 NumPy 數組PREtrain_labels ,它包含整數並從更大的 NumPy 數組中切分。 我定義了一個空數組train_labels 我的目標是,以填補空與NumPy陣列( train_labels與在整數數組所選切片) PREtrain_labels 但是有一個問題,當我從PREtrain_labels數組中取出每個整數時,我希望每個整數都放在另一個名為TRstore空數組中。 然后,我想將TRstore NumPy 數組放入空的train_labels數組中。 但是,當我運行代碼並打印最終的train_labels數組時,它是空的。

怎么可能解決這個問題? 如果np.append()是錯誤的使用方法,我應該使用哪一種? 上面的代碼不會單獨運行,因此,我將下面的代碼簡化為可運行的版本。 提前致謝!

loopArr = np.array([1, 2, 3, 4, 5])
a = np.asarray([1, 2, 3, 4, 5])
target = np.array([])
store = 0
i = 0

while i < len(loopArr):
  store = np.asarray([a.item(i)])
  np.append(target, store)
  i = i + 1

print(target)
In [30]: res = np.array([])                                                                    
In [31]: np.append(res, np.array(1))                                                           
Out[31]: array([1.])
In [32]: res                                                                                   
Out[32]: array([], dtype=float64)

Out[31}是一個 1 元素的浮點數組 - 因為res是浮點數。 但請注意res沒有改變。 np.append是一個公正的構思不佳“蓋” np.concatenate

concatenate對輸入的維度有點挑剔

In [33]: np.concatenate([ res, np.array(1)])                                                   
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-33-bb45ea1930d0> in <module>
----> 1 np.concatenate([ res, np.array(1)])

<__array_function__ internals> in concatenate(*args, **kwargs)

ValueError: all the input arrays must have same number of dimensions, but the array at index 0 has 1 dimension(s) and the array at index 1 has 0 dimension(s)
In [34]: np.concatenate([ res, np.array([1])])                                                 
Out[34]: array([1.])

這將一個 (0,) 形狀的數組與一個 (1,) 形狀連接起來以產生一個 (1,)。 那個[]數組幾乎沒用。

concatenate需要一個完整的數組列表(甚至是列表)。 充分利用這一點:

In [35]: np.concatenate([np.array([1]), np.array([2]), [3], [1,2,3]])                          
Out[35]: array([1, 2, 3, 1, 2, 3])

但是你為什么要在循環中append呢? 為什么不列出追加? 就地工作並且相對快速且無錯誤。 為什么要讓自己的生活變得艱難?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM