我来自 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 许可协议
我来自 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 许可协议
注意:由于我们已经有了 普通 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 许可协议
2 回答5.3k 阅读✓ 已解决
2 回答1.2k 阅读✓ 已解决
4 回答1.5k 阅读✓ 已解决
3 回答1.4k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
2 回答941 阅读✓ 已解决
1 回答1.8k 阅读✓ 已解决
最具可读性的可能是列表理解:
如果您是功能类型,您会喜欢
map
: