字符串数组被意外截断(Python 3.5)

2024-09-28 19:33:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我想将一系列字符串合并到一个数组元素中,但是我遇到了一个奇怪的截断错误。这样做有效:

>>> x = ' '.join(np.array(['water','road','agriculture','habitation']))
>>> print(x)
'water road agriculture habitation'

我需要对60000+个对象的数组执行此操作,但是一旦我添加for循环,长字符串的末端就会被切断。以下是简化版本:

>>> y = np.zeros([3,2]).astype(str)
>>> y[:,0] = ['image_1','image_2','image_3']
>>> for i in range(3):
...    z = np.array(['water','road','agriculture','habitation'])
...    y[i,1] = ' '.join(z)
>>> print(y)
[['image_1' 'water road agriculture habitatio']
 ['image_2' 'water road agriculture habitatio']
 ['image_3' 'water road agriculture habitatio']]

我不知道是什么导致了这一切。有什么建议吗?你知道吗


Tags: 字符串image元素for错误np数组array
1条回答
网友
1楼 · 发布于 2024-09-28 19:33:35

str不是NumPy类型,并且不适合NumPy的类型系统,因为它具有任意长度。我找不到这实际上是在哪里记录的,但是当您请求这个类型时,您得到的实际上是'S32'-每个元素得到分配给它的正好32个字符的空间,超出这个范围的任何内容都会丢失。你知道吗

您可以显式地使用较长的字符串类型'S40'来保存所需的最长字符串,但是如果平均字符串长度远小于最大长度,则会浪费大量内存。最好使用object(或'O')类型,以便数组包含对普通Python对象的引用—字符串的行为将正常。你知道吗

相关问题 更多 >