相关疑难解决方法(0)

在numpy中重新定义*=运算符

正如这里这里提到的,这在numpy 1.7+中不再起作用:

import numpy
A = numpy.array([1, 2, 3, 4], dtype=numpy.int16)
B = numpy.array([0.5, 2.1, 3, 4], dtype=numpy.float64)
A *= B
Run Code Online (Sandbox Code Playgroud)

解决方法是:

def mult(a,b):
    numpy.multiply(a, b, out=a, casting="unsafe")

def add(a,b):
    numpy.add(a, b, out=a, casting="unsafe")

mult(A,B)
Run Code Online (Sandbox Code Playgroud)

但这对于每个矩阵操作来说都太长了!

如何在*=默认情况下覆盖numpy 运算符来执行此操作?

我应该继承一些东西吗?

python arrays numpy subclass

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

如何在Python中读取类似于Matlab audioread的音频文件?

我正在使用wavefile.read()Python将音频文件导入Python.我想要的是读取一个音频文件,其中每个样本都是double,并标准化为-1.0到+1.0,类似于Matlab audioread()函数.我该怎么做 ?

python audio matlab

4
推荐指数
2
解决办法
4111
查看次数

如何将int numpy数组的列乘以float数字并保持int?

我有一个numpy数组:

 >>> b
 array([[ 2,  2],
        [ 6,  4],
        [10,  6]])
Run Code Online (Sandbox Code Playgroud)

我想将第一列乘以浮点数,结果我需要int数,因为当我这样做时:

>>> b[:,0] *= 2.1
Run Code Online (Sandbox Code Playgroud)

它说:

TypeError: Cannot cast ufunc multiply output from dtype('float64') to dtype('int64') with casting rule 'same_kind'
Run Code Online (Sandbox Code Playgroud)

我需要看起来像这样的数组:

array([[ 4,  2],
       [12,  4],
       [21,  6]])
Run Code Online (Sandbox Code Playgroud)

python numpy

3
推荐指数
2
解决办法
258
查看次数

标签 统计

python ×3

numpy ×2

arrays ×1

audio ×1

matlab ×1

subclass ×1