Numpy 只取字符串的第一个字符

Par*_*eog 4 python numpy

以下是我的问题的简化版本。我想创建一个(N, 1)形状 numpy 数组,它将字符串作为它们的值。但是,当我尝试插入字符串时,只会插入字符串的第一个字符。

我在这里做错了什么?

>>> import numpy as np
>>> N = 23000
>>> Y = np.empty((N, 1), dtype=str)
>>> Y.shape
(23000, 1)
>>> for i in range(N):
...     Y[i] = "random string"
...
>>> Y[10]
array(['r'], dtype='<U1')
Run Code Online (Sandbox Code Playgroud)

anj*_*505 6

默认情况下,数据类型str的长度为1. 所以,你只会得到一个角色。我们可以通过使用设置最大数据长度np.dtype('U100')Un哪里U是 unicode,n是其中的字符数。

试试下面的代码

>>> import numpy as np
>>> N = 23000
>>> Y = np.empty((N, 1), dtype=np.dtype('U100'))
>>> Y.shape
(23000, 1)
>>> for i in range(N):
...     Y[i] = "random string"
...
>>> Y[10]
array(['random string'], dtype='<U100')
Run Code Online (Sandbox Code Playgroud)