Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
不必显式地处理第一个赋值就可以构建numpy数组的python方法?_Python_Numpy - Fatal编程技术网

不必显式地处理第一个赋值就可以构建numpy数组的python方法?

不必显式地处理第一个赋值就可以构建numpy数组的python方法?,python,numpy,Python,Numpy,我发现自己经常遇到这种编码模式: matrices = np.random.rand(10, 10, 10) block = np.array([]) for idx, M in enumerate(matrices): print(M.shape) if idx == 0: block = M else: block = np.dstack((block, M)) 这只是一个例子,我知道在这种情况下,我可以只做block=matrix。

我发现自己经常遇到这种编码模式:

matrices = np.random.rand(10, 10, 10)
block = np.array([])
for idx, M in enumerate(matrices):
    print(M.shape)
    if idx == 0:
        block = M
    else:
        block = np.dstack((block, M))
这只是一个例子,我知道在这种情况下,我可以只做
block=matrix
。有没有更好的方法来做到这一点而不必处理

if idx == 0:
    block = M

案例?

不要用
dstack
(或任何串联变量)累加数组-使用列表追加

block = []
for idx, M in enumerate(matrices):
    block.append(M)
然后把它们堆在后面

block = np.dstack(block)   # concatenate(block, axis=2)

这会更快,并避免这种初始化困难。

不要用
dstack
(或任何串联变量)累积数组-使用列表追加

block = []
for idx, M in enumerate(matrices):
    block.append(M)
然后把它们堆在后面

block = np.dstack(block)   # concatenate(block, axis=2)

这会更快,并避免这种初始化尴尬。

您是否意识到,目前您正在某种程度上转置矩阵?如果没有其他方法有效,您可以将其缩短为
block=np.dstack((block,M)),如果idx else M
@tobias_k,我如何准确转置矩阵?我不是故意的。只要做
print(matrices)
print(block)
就可以看出区别。你知道目前你在某种程度上转置矩阵吗?如果没有其他办法,你可以把它缩短为
block=np.dstack((block,M)),如果idx else M
@tobias_k,我如何准确地转置矩阵?我不是故意的。只要做
print(matrix)
print(block)
就可以看出区别。