【问题标题】:(Python3.x)Splitting arrays and saving them into new arrays(Python3.x)拆分数组并将它们保存到新数组中
【发布时间】:2020-02-13 15:19:23
【问题描述】:

我正在编写一个 Python 脚本,旨在将大量数字拆分为相等的子数组。为此,我使用 Numpy 的 split 方法如下:

test=numpy.array_split(raw,nslices)

其中 raw 是包含所有值的完整数组,顺便说一下,它们是 float64 类型的。 nslices 是我想从 raw 数组中创建的子数组的数量。

在脚本中,nslices 可能会根据 raw 数组的大小而有所不同,因此我想“自动”将每个创建的子数组保存在特定的数组为:resultsarray(i),其方式与在 MATLAB/Octave 中制作的方式类似。 我尝试在 Python 中使用for in range 循环,但我只能将最后一个子数组保存在变量中。

从 1 到 nslices 的每个增量保存子数组的正确方法是什么?

到此,完整的代码就到这里了(我是Python初学者,麻烦脚本底层了)。

import numpy as np
file = open("results.txt", "r")
raw = np.loadtxt(fname=file, delimiter="/n", dtype='float64')
nslices = 3

rawslice = np.array_split(raw,nslices)

for i in range(0,len(rawslice)):
  resultsarray=(rawslice[i])
  print(rawslice[i])

非常感谢您帮助解决这个问题!

【问题讨论】:

  • 为什么不直接使用resultarray = np.array_split(raw, nslices)?你可以在这一步之后使用resultarray[i]...

标签: python arrays for-loop indexing


【解决方案1】:

首先 - 你搞砸了分隔符:) 应该是反斜杠+n \n 而不是/n

第二 - 正如 Serge 在评论中已经提到的那样,您可以按索引访问拆分部分(resultarray[0][2])。但是,如果您真的想将每个部分分配给一个单独的变量,您可以通过以下方式执行此操作:

result_1_of_3, result_2_of_3, result_3_of_3 = rawslice

print(result_1_of_3, result_2_of_3, result_3_of_3)

但这可能不是你应该走的路。

【讨论】:

  • 感谢您的快速回答 Tupteq !的确,这是完全正确的! :) 事实上,脚本的下一部分是使用拆分数组在 UI 中设置一个表,这样如果 nslice 保持不变,这可能是一个解决方案。但如果需要,我仍然会记住它!
猜你喜欢
  • 1970-01-01
  • 2013-03-06
  • 1970-01-01
  • 1970-01-01
  • 2012-04-01
  • 1970-01-01
  • 2022-01-13
  • 1970-01-01
  • 2016-11-21
相关资源
最近更新 更多