相关疑难解决方法(0)

What does -1 mean in numpy reshape?

A numpy matrix can be reshaped into a vector using reshape function with parameter -1. But I don't know what -1 means here.

For example:

a = numpy.matrix([[1, 2, 3, 4], [5, 6, 7, 8]])
b = numpy.reshape(a, -1)
Run Code Online (Sandbox Code Playgroud)

The result of b is: matrix([[1, 2, 3, 4, 5, 6, 7, 8]])

有谁知道-1在这里意味着什么?并且似乎python赋予-1几个含义,例如:array[-1]表示最后一个元素.你能解释一下吗?

python numpy

354
推荐指数
9
解决办法
22万
查看次数

折叠 numpy 数组除前两个维度之外的所有维度

我有一个可变维度的 numpy 数组,例如它可以具有以下形状

(64, 64)
(64, 64, 2, 5)
(64, 64, 40)
(64, 64, 10, 20, 4)
Run Code Online (Sandbox Code Playgroud)

我想要做的是,如果维数大于 3,我想将其他所有内容折叠/堆叠到第三维中,同时保留顺序。所以,在我上面的例子中,操作后的形状应该是:

(64, 64)
(64, 64, 10)
(64, 64, 40)
(64, 64, 800)
Run Code Online (Sandbox Code Playgroud)

此外,还需要保留订单。例如,形状的数组(64, 64, 2, 5)应堆叠为

(64, 64, 2)
(64, 64, 2)
(64, 64, 2)
(64, 64, 2)
(64, 64, 2)
Run Code Online (Sandbox Code Playgroud)

即一个接一个的 3D 切片。另外,在操作之后,我想将其重塑回原始形状,而不进行任何排列,即保留原始顺序。

我可以做的一种方法是将所有维度值从 3 乘以最后一个维度,即

shape = array.shape
if len(shape) > 3:
    final_dim = 1
    for i in range(2, len(shape)):
        final_dim *= shape[i]
Run Code Online (Sandbox Code Playgroud)

然后重塑数组。就像是:

array.reshape(64, 64, final_dim)
Run Code Online (Sandbox Code Playgroud)

然而,我首先不确定顺序是否按照我想要的方式保留,以及是否有更好的 …

python numpy

4
推荐指数
1
解决办法
5122
查看次数

Numpy 通过交错连接数组

我有 4 个数组,我想将它们连接成一个交错的数组。我该怎么做呢?

>>> import numpy as np
>>> a = np.tile(0,(5,2))
>>> b = np.tile(1,(5,2))
>>> c = np.tile(2,(5,2))
>>> d = np.tile(3,(5,2))
>>> e = np.concatenate((a,b,c,d),axis=1)
>>> e
    array([[0, 0, 1, 1, 2, 2, 3, 3],
           [0, 0, 1, 1, 2, 2, 3, 3],
           [0, 0, 1, 1, 2, 2, 3, 3],
           [0, 0, 1, 1, 2, 2, 3, 3],
           [0, 0, 1, 1, 2, 2, 3, 3]])
Run Code Online (Sandbox Code Playgroud)

这仅给出了串联。

然而,我想要的输出是:

>>> desired_output
    array([[0, 1, 2, 3, 0, 1, …
Run Code Online (Sandbox Code Playgroud)

python arrays numpy

3
推荐指数
1
解决办法
1776
查看次数

标签 统计

numpy ×3

python ×3

arrays ×1