小编gre*_*een的帖子

Numpy:inplace和explicit操作的奇怪的不同行为

我想操作numpy数组来使用它们的索引,我想要包含0维的情况.现在我遇到了一个奇怪的情况,如果我不使用就地乘法,则会出现类型转换:

In [1]: import numpy as np

In [2]: x = 1.*np.array(1.)

In [3]: y = np.array(1.)

In [4]: y *= 1.

In [5]: x
Out[5]: 1.0

In [6]: y
Out[6]: array(1.)

In [7]: type(x)
Out[7]: numpy.float64

In [8]: type(y)
Out[8]: numpy.ndarray
Run Code Online (Sandbox Code Playgroud)

为什么x的类型与y不同?我知道,inplace操作是不同的实现,他们不创建数组的副本,但我不明白,为什么类型被更改,如果我将一个0d数组与浮点数相乘?它适用于1d阵列:

In [1]: import numpy as np

In [2]: x = np.array(1.)

In [3]: y = np.array([1.])

In [4]: 1.*x
Out[4]: 1.0

In [5]: 1.*y
Out[5]: array([1.])

In [7]: type(1.*x)
Out[7]: numpy.float64

In [8]: type(1.*y)
Out[8]: numpy.ndarray
Run Code Online (Sandbox Code Playgroud)

我想,这很奇怪......现在我遇到了以下问题,我必须分别处理0d数组: …

python arrays numpy in-place numpy-ndarray

7
推荐指数
1
解决办法
155
查看次数

反转“ numpy.ma.compressed”操作

我想从压缩的蒙版数组和相应的蒙版创建一个数组。用一个例子更容易解释:

>>> x=np.ma.array(np.arange(4).reshape((2,2)), mask = [[True,True],[False,False]])
>>> y=x.compressed()
>>> y
array([ 2,  3])
Run Code Online (Sandbox Code Playgroud)

现在,我想创建一个与x形状相同的数组,其中被掩码的值获得一个标准值(例如-1),其余的用给定的数组填充。它应该像这样工作:

>>> z = decompress(y, mask=[[True,True],[False,False]], default=-1)
>>> z
array([[-1, -1],
       [ 2,  3]])
Run Code Online (Sandbox Code Playgroud)

问题是:是否有类似“解压缩”的方法,还是我需要自己编写代码?在Fortran中,这是通过“ pack”和“ unpack”方法完成的。感谢您的任何建议。

python numpy masked-array

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

标签 统计

numpy ×2

python ×2

arrays ×1

in-place ×1

masked-array ×1

numpy-ndarray ×1