【问题标题】:How to reverse a numpy array using loops如何使用循环反转 numpy 数组
【发布时间】:2020-03-31 22:02:45
【问题描述】:

给定这个 numpy 数组:

 Input:  nums = np.array([0] * SIZE, dtype=int)
 Output: [ 10  20  30  40  50  60  70  80  90 100]

我需要使用循环来反转数组元素(而不是直接使用 numpy 命令)。 所以期望的结果是:[100, 90 ,80,....10]
如何使用 for 或 while 循环结构来反转这些?

这是我到目前为止所得到的。

for i in range(len(arr)-1, -1, -1):
        print(arr[i])

这将打印相反的顺序,但是如何将这些元素以这种相反的顺序存储回数组中呢?

我知道 numpy 已经内置了执行此操作的函数,但是我想从第一原则的方法中理解这一点。

【问题讨论】:

  • nums[::-1] 只使用python切片
  • 到目前为止您尝试过什么?此外,谷歌是你的朋友,因为它看起来像 numpy 有一个用于这个确切目的的内置函数。
  • “我该如何解决这个作业问题”不是 Stack Overflow 问题。请重复介绍导览,尤其是on topic
  • ""请求家庭作业帮助的问题必须包括您迄今为止为解决问题所做的工作的总结,以及您在解决问题时遇到的困难的描述。"
  • 以及你在解决它时遇到的困难的描述。那部分不见了,不是吗?

标签: python arrays numpy reverse


【解决方案1】:
import numpy as np

nums = np.array([10,20,30,40,50,60,70,80,90,100], dtype=int)
rev = np.zeros(nums.size, dtype=int)
for i in range(nums.size):
    rev[nums.size - (i + 1)] = nums[i]

np.zeros(s, dtype=d) 创建一个大小为s 的数组,其中填充了d 类型的零。

在这种情况下,rev 是反转数组,nums.sizelen(nums) 相同

【讨论】:

  • nums.size is the same as len(nums) 小心,这仅适用于一维 ndarray。
  • = a[i] 给出了名称 a 未定义的错误。这是有原因的吗?
  • @AMC 我知道,这就是我写“在这种情况下”的原因
  • @PascalvonFellenberg 我只是想确定一下,我担心它可能会模棱两可:)
  • @JasonMcKinnerney 对不起,我的错应该是rev[nums.size - (i + 1)] = nums[i]
【解决方案2】:
import numpy as np

nums = np.array([10,20,30,40,50,60,70,80,90,100], dtype=int)
rev = np.zeros(nums.size, dtype=int)
for i in range(nums.size):
    rev[nums.size - (i + 1)] = nums[i]

【讨论】:

  • 请不要只发布代码作为答案,还要解释您的代码的作用以及它如何解决问题的问题。带有解释的答案通常质量更高,更有可能吸引投票。
  • 请添加几句话来解释您的代码在做什么,以便您的回答获得更多的支持。
  • 在 for 循环中执行 np.array 反转将比使用 numpy 内置函数多花费大约 5 个数量级的时间。
猜你喜欢
  • 2017-11-20
  • 2021-05-02
  • 2017-07-26
  • 2018-11-13
  • 2014-10-07
  • 1970-01-01
  • 2013-07-16
  • 2014-09-25
  • 1970-01-01
相关资源
最近更新 更多