Python 如何在for循环中生成字符串向量
如何将int数组转换为str数组 输入: lenx=73293 输出:Python 如何在for循环中生成字符串向量,python,arrays,string,numpy,for-loop,Python,Arrays,String,Numpy,For Loop,如何将int数组转换为str数组 输入: lenx=73293 输出: y = np.array(["0","1","2","3"....]) 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",
y = np.array(["0","1","2","3"....])
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"])
我们考虑过这样做:
y=[]
for i in range(len(x)):
y=y.append(str(x[i]))
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]))
但它不起作用 试试以下方法:
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)
纯numpy的速度也更快:
%timeit y = [str(x) for x in np.arange(73293)]
10 loops, best of 3: 87.3 ms per loop
%timeit y = np.arange(73293).astype(np.str)
100 loops, best of 3: 8.77 ms per loop
希望有帮助。尝试以下方法:
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)
纯numpy的速度也更快:
%timeit y = [str(x) for x in np.arange(73293)]
10 loops, best of 3: 87.3 ms per loop
%timeit y = np.arange(73293).astype(np.str)
100 loops, best of 3: 8.77 ms per loop
希望有帮助。您可以使用:
输出:
array(['0', '1', '2', '3'],
dtype='<U1')
100000 loops, best of 3: 18 µs per loop
您可以使用:
输出:
array(['0', '1', '2', '3'],
dtype='<U1')
100000 loops, best of 3: 18 µs per loop
您还可以与自定义函数一起使用,如以下示例所示:
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'
您还可以与自定义函数一起使用,如以下示例所示:
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'
这可以在纯Python中解决:
>>> map(str, x)
['1', '2', '3']
或者,如果您需要转换回:
>>> x = np.array([1,2,3])
>>> np.array(map(str, x))
array(['1', '2', '3'],
dtype='|S7')
这可以在纯Python中解决:
>>> map(str, x)
['1', '2', '3']
或者,如果您需要转换回:
>>> x = np.array([1,2,3])
>>> np.array(map(str, x))
array(['1', '2', '3'],
dtype='|S7')
如何将矩阵转换为数组/字符串列表? 输入: 输出:
y = np.array(["0","1","2","3"....])
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"])
我们尝试过这样的方法:
y=[]
for i in range(len(x)):
y=y.append(str(x[i]))
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]))
如何将矩阵转换为数组/字符串列表? 输入: 输出:
y = np.array(["0","1","2","3"....])
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"])
我们尝试过这样的方法:
y=[]
for i in range(len(x)):
y=y.append(str(x[i]))
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]))
y=[stri for i in x]注意-没有numpy,您必须验证它是否有效。如果您想使它与for循环而不是列表理解一起工作,您应该编写y.appendstrx[i]而不是y=y.appendstrx[i]。append将元素添加到列表中并返回None,因此在第一次迭代后y将为None。y=[stri for i in x]注意-如果没有numpy,则必须验证此操作是否有效。如果要使其与for循环而不是列表理解一起工作,则应编写y.appendstrx[i]而不是y=y.appendstrx[i]。append将元素添加到列表中并返回None,因此y在第一次迭代后将为None。很好!没想到。@Ding,不知道np.str,谢谢你的把戏我得调查一下!但是它看起来比内置str慢了一点,你知道它有什么好处吗?很好!没想到。@Ding,不知道np.str,谢谢你的把戏我得调查一下!但是它看起来比内置str慢了一点,你知道它有什么好处吗?