我正在尝试建立一个计数直方图...所以我创建了桶.我知道我可以通过并附加一堆零,即沿着这些方向的东西:
buckets = []
for i in xrange(0,100):
buckets.append(0)
Run Code Online (Sandbox Code Playgroud)
有更优雅的方式吗?我觉得应该有一种方法来声明一个特定大小的数组.
我知道numpy有,numpy.zeros但我想要更通用的解决方案
OK.*_*OK. 93
为了完整性:要在python中声明一个零的多维列表,你必须使用这样的列表推导:
buckets = [[0 for col in range(5)] for row in range(10)]
Run Code Online (Sandbox Code Playgroud)
避免行之间的引用共享.
这看起来比chester1000的代码更笨拙,但如果以后要更改这些值则必不可少.有关更多详细信息,请参阅Python FAQ.
mjh*_*jhm 20
您可以将a乘以list整数n以重复以下list n时间:
buckets = [0] * 100
Run Code Online (Sandbox Code Playgroud)
mee*_*ian 17
用这个:
bucket = [None] * 100
for i in range(100):
bucket[i] = [None] * 100
Run Code Online (Sandbox Code Playgroud)
要么
w, h = 100, 100
bucket = [[None] * w for i in range(h)]
Run Code Online (Sandbox Code Playgroud)
它们都将输出正确的空多维桶列表100x100
fab*_*ioM 11
使用numpy
import numpy
zarray = numpy.zeros(100)
Run Code Online (Sandbox Code Playgroud)
然后使用直方图库函数
问题是“如何声明零数组...... ”但是示例代码引用了 Python 列表:
buckets = [] # this is a list
Run Code Online (Sandbox Code Playgroud)
但是,如果有人真的想要初始化一个数组,我建议:
from array import array
my_arr = array('I', [0] * count)
Run Code Online (Sandbox Code Playgroud)
Python 纯粹主义者可能会声称这不是Pythonic并建议:
my_arr = array('I', (0 for i in range(count)))
Run Code Online (Sandbox Code Playgroud)
在Python的版本是非常缓慢的,当你有几百个阵列成千上万值进行初始化,差距十分明显。
| 归档时间: |
|
| 查看次数: |
376407 次 |
| 最近记录: |