将2D numpy数组的行更改为字符串

时间:2016-12-07 21:54:15

标签: python arrays numpy

我有一个2D numpy数组,我想将其行更改为字符串,以便我有一个numpy数组,其中每个元素对应一个对应于2D数组行的字符串。我觉得应该有一个简单的方法来做到这一点,但我找不到它。

3 个答案:

答案 0 :(得分:1)

你的意思是这样的:

import numpy as np

y = np.array([str(xx) for xx in x])

其中x是2D numpy数组,例如:

 x = np.array([
    [1,2,3],
    [4,5,6],
    [7,8,9],
 ])

答案 1 :(得分:0)

我相信您正在寻找以下内容。

import numpy as np

x = np.array([[1,2,3],[4,5,6],[7,8,9]])
print(x.shape) # prints (3,3)

y = []
for row in x:
    item = ''
    for column in row:
        item = item + str(column)
    y.append(item)

y = np.array(y) 
print(y.shape) # prints (3,)
print(y)       # prints ['123' '456' '789']
print(y[1][1]) # prints 5

答案 2 :(得分:0)

使用Numpy数组处理数字。除非你真的知道你在做什么,否则我会劝阻它用于字符串或任何其他对象。话虽如此,

>>> import numpy as np
>>> A = np.arange(9).reshape(3,3)
>>> R = [np.array_str(a) for a in A]
>>> print R
['[ 0.  1.  2.]', '[ 3.  4.  5.]', '[ 6.  7.  8.]']

R有一个标准的python列表,这可能足以满足大多数用法。如果你真的想要一个numpy数组,并且你知道你正在做什么,你可以包装列表:

>>> R = np.asarray(R, dtype=str)

请注意,您也可以使用@JoséSánchez中的解决方案,但np.array_str为您提供了更多的灵活性,可以将行存储为字符串而不是调用str。例如。你可以将精确度设置为X小数或将小数字设置为0。