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