我有一个具有2行N列的numpy矩阵,例如(如果N=4
):
[[ 1 3 5 7]
[ 2 4 6 8]]
目标是创建字符串1,2,3,4,5,6,7,8
。
以下代码可以工作,但效果不是很好:
xs = []
for i in range(number_of_cols):
xs.append(nums.item(0, i))
ys = []
for i in range(number_of_cols):
ys.append(nums.item(1, i))
nums_str = ""
for i in range(number_of_cols):
nums_str += '{},{},'.format(xs[i], ys[i])
row.join(',')
)加入结果列表如何使用内置函数合并行(或者整体上以更优雅的方式合并行)?
答案 0 :(得分:0)
可以通过以下方式加入行:
>>> a = np.arange(12).reshape(3,4)
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
>>> np.hstack([a[i,:] for i in range(a.shape[0])])
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11])
然后将这个数组转换为字符串很简单。
答案 1 :(得分:0)
在展平(或拉平)时指定F
的顺序:
In [279]: arr = np.array([[1,3,5,7],[2,4,6,8]])
In [280]: arr
Out[280]:
array([[1, 3, 5, 7],
[2, 4, 6, 8]])
In [281]: arr.ravel(order='F')
Out[281]: array([1, 2, 3, 4, 5, 6, 7, 8])
答案 2 :(得分:0)
这是一种方法:
out_str = ','.join(nums.T.ravel().astype('str'))
我们首先使用.T
转换数组,然后使用.ravel()
对其进行展平,然后将每个元素从int
转换为str
,然后应用'',' .join()合并所有str元素
试用:
import numpy as np
nums = np.array([[1,3,5,7],[2,4,6,8]])
out_str = ','.join(nums.T.ravel().astype('str'))
print (out_str)
结果:
1,2,3,4,5,6,7,8