我需要创建一个长度为NumPy的数组n,其中每个元素都是v.
还有什么比:
a = empty(n)
for i in range(n):
a[i] = v
Run Code Online (Sandbox Code Playgroud)
我知道zeros和ones会的工作为V = 0,1,我可以使用v * ones(n),但是当它不会工作v的None,而且也将是慢得多.
它不应该那么难.我的意思是在C,
int a[10];
Run Code Online (Sandbox Code Playgroud)
是你所需要的全部.如何为随机大小创建全零的数组.我知道NumPy中的零()函数,但必须有一个简单的内置方法,而不是另一个模块.
在Python中初始化和访问大型数组元素的有效方法是什么?
我想在Python中创建一个包含1亿个条目的数组,无符号的4字节整数,初始化为零.我想要快速数组访问,最好是连续的内存.
奇怪的是,NumPy阵列的表现似乎很慢.我可以尝试其他替代品吗?
有array.array模块,但我没有看到有效分配1亿条目块的方法.
回复评论:
如何在python中创建大数组,如何有效地创建它
在C/C++中:
byte *data = (byte*)memalloc(10000);
Run Code Online (Sandbox Code Playgroud)
要么
byte *data = new byte[10000];
Run Code Online (Sandbox Code Playgroud)
在python ...?
标题相似的问题与Python列表或NumPy有关。这与标准Python库的array.array类有关,请参阅https://docs.python.org/2/library/array.html
我想出的快速方法(对于整数类型)是将array.fromfile与/ dev / zero一起使用。这是
但是,/ dev / zero在某些平台上可能不可用。没有NumPy,非标准模块或我自己的c扩展,还有更好的方法吗?
演示者代码:
import array
import sys
import time
size = 100 * 1000**2
test = sys.argv[1]
class ZeroIterable:
def __init__(self, size):
self.size = size
self.next_index = 0
def next(self):
if self.next_index == self.size:
raise StopIteration
self.next_index = self.next_index + 1
return 0
def __iter__(self):
return self
t = time.time()
if test == 'Z':
myarray = array.array('L')
f = open('/dev/zero', 'rb')
myarray.fromfile(f, size)
f.close()
elif test …Run Code Online (Sandbox Code Playgroud)