Python 从字符串列表实例化两个2D numpy数组
我有一个表格中的行列表:Python 从字符串列表实例化两个2D numpy数组,python,arrays,string,numpy,Python,Arrays,String,Numpy,我有一个表格中的行列表: "a, b, c, d, e ... z," 其中,第一个x需要保存为一个二维数组中的一行,而该行的其余部分则保存为另一个二维数组中的一行 现在,如果这是在C/C++或Java中进行的,那么这将很容易,我可以在几秒钟内完成。但我还没有完全习惯python。但给出一个数组,例如: ['1, 2, 4, 5,', '2, 3, 6, 3,', '1, 1, 7, 6'] 被告知必须将第一个数组中的两列拆分为第二个数组中的两列如何将该列表转换为以下两个numpy数组: [
"a, b, c, d, e ... z,"
其中,第一个x需要保存为一个二维数组中的一行,而该行的其余部分则保存为另一个二维数组中的一行
现在,如果这是在C/C++或Java中进行的,那么这将很容易,我可以在几秒钟内完成。但我还没有完全习惯python。但给出一个数组,例如:
['1, 2, 4, 5,', '2, 3, 6, 3,', '1, 1, 7, 6']
被告知必须将第一个数组中的两列拆分为第二个数组中的两列如何将该列表转换为以下两个numpy数组:
[[1, 2]
[2, 3]
[1, 1]]
以及:
另外,为了理解为什么我不能/不应该遍历嵌套for循环中的每个元素并逐个覆盖它们。我不明白为什么当我尝试时,这些值与复制的值不匹配
作为参考,我尝试了以下代码:
self.inputs=np.zeros((len(data), self.numIn))
self.outputs=np.zeros((len(data),self.numOut))
lineIndex=0
for line in data:
d=line.split(',')
for i in range(self.numIn):
self.inputs[lineIndex][i]=d[i]
print d[i],
self.inputs.index()
for j in range(self.numOut):
self.inputs[lineIndex][j]=d[self.numIn+j]
lineIndex+=1
我认为在python/numpy中,创建一个包含所有值的numpy数组,然后将其拆分为两个单独的数组可能更容易。如果这样做比较容易,我们将不胜感激。(我提出可能的解决方案真是太好了!:P)
我同意最后一点:
我认为在python/numpy中,创建一个包含所有值的numpy数组,然后将其拆分为两个单独的数组可能更容易。如果这样做比较容易,我们将不胜感激。(我提出可能的解决方案有多好!:P) 您可以(删除尾随逗号)和(分解为单个字符列表)中的每个字符串来获得行列表a = ['1, 2, 4, 5,', '2, 3, 6, 3,', '1, 1, 7, 6']
rows = [l.rstrip(',').split(',') for l in a]
rows
#[['1', ' 2', ' 4', ' 5'], ['2', ' 3', ' 6', ' 3'], ['1', ' 1', ' 7', ' 6']]
然后将其转换为整数数组:
arr = np.array(rows, int)
arr
#array([[1, 2, 4, 5],
# [2, 3, 6, 3],
# [1, 1, 7, 6]])
要获得两半:
arr[:, :2] # first two columns
#array([[1, 2],
# [2, 3],
# [1, 1]])
arr[:, -2:] # last two columns
#array([[4, 5],
# [6, 3],
# [7, 6]])
或者,要返回两个数组:
a, b = np.split(arr, arr.shape[1]/2, axis=1)
谢谢,当我写评论的时候,为了让它成为我所需要的答案,编辑工作一直在进行:)@user1646196哈哈,我想我已经完成了,但是如果有什么不清楚的地方,请再次评论:)
a, b = np.split(arr, arr.shape[1]/2, axis=1)