你如何在for循环中创建一个字符串向量

时间:2017-06-19 14:30:55

标签: python arrays string numpy for-loop

如何将int数组转换为str数组 输入:

x = np.array([0,1,2,3....])

LEN(X)= 73293

输出:

y = np.array(["0","1","2","3"....])

我们虽然做了这样的事情:

y=[]
for i in range(len(x)):
        y=y.append(str(x[i]))

但它不起作用。

5 个答案:

答案 0 :(得分:2)

尝试类似:

PropertyDescription

同样纯粹的numpy更快:

import numpy as np

#with list comprehension 
y = [str(x) for x in np.arange(73293)]

#if you prefer to use pure numpy
y = np.arange(73293).astype(np.str)

希望它有所帮助。

答案 1 :(得分:1)

您可以使用vectorize

f = np.vectorize(lambda x:str(x))
f(x)

输出:

array(['0', '1', '2', '3'], 
      dtype='<U1')
100000 loops, best of 3: 18 µs per loop

编辑:

f(np.arange(73293))

10 loops, best of 3: 30.3 ms per loop

答案 2 :(得分:1)

您也可以将np.apply_along_axis()与自定义函数一起使用,例如:

def my_func(a):
    return list(map(str, a))

a = np.array([0,1,2,3])
a = np.apply_along_axis(lambda x: my_func(x), 0, a)

输出:

>>> a
array(['0', '1', '2', '3'], 
      dtype='<U1'

答案 3 :(得分:0)

这可以用纯Python解决:

>>> map(str, x)
['1', '2', '3']

或者如果您需要转换回来:

>>> x = np.array([1,2,3])
>>> np.array(map(str, x))
array(['1', '2', '3'], 
  dtype='|S7')

答案 4 :(得分:0)

如何将矩阵转换为数组/字符串列表? 输入:

M =   array([[1,1,2,5],
             [1,1,2,3],
             [1,2,0,4],
             [1,2,0,6],
             [1,2,0,8],
             [2,1,3,5],
             [2,2,9,6],
             [2,2,9,4]])

输出:

N =   array(["1,1,2,5",
             "1,1,2,3",
             "1,2,0,4",
             "1,2,0,6",
             "1,2,0,8",
             "2,1,3,5",
             "2,2,9,6",
             "2,2,9,4"])

我们尝试过这样的事情:

list1=[]
for i in range(len(M)):
    list1=list1.append(str(M[i,0]),str(M[i,1]),str(M[i,2]),str(M[i,3]))