簡體   English   中英

如何控制numpy數組元素的緩沖區大小?

[英]How to control the buffer size for numpy array elements?

這里的想法是動態地增加數組的大小(行X列)(使用hstack和vstack)。 但是,我不知道在必須增加大小時即將在數組的特定位置寫入的字符串的長度。 因此,未知元素用例如''或0或類似的東西初始化。

如果占位符太短,則會導致錯誤:

x = array([["1;", "2;"],["3;", "4;"]])
x[0][0] = "1234567890;"
print x

提供:

[['12' '2;']
 ['3;' '4;']]

[0] [0]位置缺少許多字符,而

x = array([["1;", "2;"],["abcdefghij;", "4;"]])
x[0][0] = "1234567890;"
print x

提供預期的結果,即:

[['1234567890;' '2;']
 ['abcdefghij;' '4;']]

我們如何用Python處理呢? 提前謝謝了!

我相信Numpy數組對於處理非數字類型不是很好,但是如果您仍然想使用它,則可以這樣做。

您可以手動將數組的dtype設置為object'S#' ,其中#是最大字符數。

In [19]: x = np.array([["1;", "2;"],["3;", "4;"]], dtype=object)

In [20]: x
Out[20]:
array([['1;', '2;'],
       ['3;', '4;']], dtype=object)

In [21]: x[0,0] = "1234567890;"

In [22]: x
Out[22]:
array([['1234567890;', '2;'],
       ['3;', '4;']], dtype=object)


In [24]: x = np.array([["1;", "2;"],["3;", "4;"]], dtype='S64')

In [25]: x
Out[25]:
array([['1;', '2;'],
       ['3;', '4;']],
      dtype='|S64')

In [26]: x[0,0] = "1234567890;"

In [27]: x
Out[27]:
array([['1234567890;', '2;'],
       ['3;', '4;']],
      dtype='|S64')

暫無
暫無

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

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