我想将一系列字符串合并到一个数组元素中,但是我遇到了一个奇怪的截断错误。这样做有效:
>>> 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']]
我不知道是什么导致了这一切。有什么建议吗?你知道吗
str
不是NumPy类型,并且不适合NumPy的类型系统,因为它具有任意长度。我找不到这实际上是在哪里记录的,但是当您请求这个类型时,您得到的实际上是'S32'
-每个元素得到分配给它的正好32个字符的空间,超出这个范围的任何内容都会丢失。你知道吗您可以显式地使用较长的字符串类型
'S40'
来保存所需的最长字符串,但是如果平均字符串长度远小于最大长度,则会浪费大量内存。最好使用object
(或'O'
)类型,以便数组包含对普通Python对象的引用—字符串的行为将正常。你知道吗相关问题 更多 >
编程相关推荐