在 Python 中对数字列表(或数组?)进行平方

新手上路,请多包涵

我来自 MATLAB 背景,根据其他堆栈中的答案,到目前为止,这个简单的操作似乎在 Python 中实现起来非常复杂。通常,大多数答案都使用 for 循环。

到目前为止我见过的最好的是

import numpy
start_list = [5, 3, 1, 2, 4]
b = list(numpy.array(start_list)**2)

有更简单的方法吗?

原文由 user1936752 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 814
2 个回答

最具可读性的可能是列表理解:

 start_list = [5, 3, 1, 2, 4]
b = [x**2 for x in start_list]

如果您是功能类型,您会喜欢 map

 b = map(lambda x: x**2, start_list)  # wrap with list() in Python3

原文由 L3viathan 发布,翻译遵循 CC BY-SA 3.0 许可协议

注意:由于我们已经有了 普通 Python、列表理解和映射 的副本,而且我还没有找到一个副本来对一 维 numpy 数组 进行平方,所以我想我会保留使用 numpy 的原始答案

numpy.square()

如果您是从 MATLAB 转到 Python,那么为此尝试使用 numpy 绝对是正确的。使用 numpy,您可以使用 numpy.square() 返回输入的元素平方:

 >>> import numpy as np
>>> start_list = [5, 3, 1, 2, 4]
>>> np.square(start_list)
array([25,  9,  1,  4, 16])

numpy.power()

还有一个更通用的 numpy.power()

 >>> np.power(start_list, 2)
array([25,  9,  1,  4, 16])

原文由 bakkal 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏