【问题标题】:Python Replacing every imaginary value in array by randomPython随机替换数组中的每个虚值
【发布时间】:2015-06-23 08:07:31
【问题描述】:

我有一个

array([[ 0.01454911+0.j,  0.01392502+0.00095922j,
         0.00343284+0.00036535j, 0.00094982+0.0019255j ,
         0.00204887+0.0039264j , 0.00112154+0.00133549j,  0.00060697+0.j],
       [ 0.02179418+0.j,  0.01010125-0.00062646j,
         0.00086327+0.00495717j, 0.00204473-0.00584213j,
         0.00159394-0.00678094j, 0.00121372-0.0043044j , 0.00040639+0.j]])

我需要一个解决方案,让我能够用以下生成的随机值替换虚构的组件:

numpy.random.vonmises(mu, kappa, size=size)

生成的数组需要与第一个数组的格式相同。

【问题讨论】:

  • size 是原始数组的大小?在这种情况下可能是numpy.real(a) + numpy.random.vonmises(mu, kappa, size=size) * complex(0, 1))
  • 好的,谢谢。你的解决方法给了我一个好主意。非常感谢。

标签: python arrays numpy complex-numbers replaceall


【解决方案1】:

遍历数字并将它们设置为您喜欢的值。需要定义numpy.random.vonmises 函数的参数mukappa,因为在下面的示例中它们是未定义的。

import numpy as np

data = np.array([[ 0.01454911+0.j,  0.01392502+0.00095922j,
         0.00343284+0.00036535j, 0.00094982+0.0019255j ,
         0.00204887+0.0039264j , 0.00112154+0.00133549j,  0.00060697+0.j],
       [ 0.02179418+0.j,  0.01010125-0.00062646j,
         0.00086327+0.00495717j, 0.00204473-0.00584213j,
         0.00159394-0.00678094j, 0.00121372-0.0043044j , 0.00040639+0.j]])

def setRandomImag(c):
    c.imag = np.random.vonmises(mu, kappa, size=size)
    return c

data = [ setRandomImag(i) for i in data]

【讨论】:

  • 可能你没有正确写代码,因为它不起作用。
  • 如果我将随机值的分配替换为固定值,例如10,它可以正常工作。我特别写了,random.vonmises 的参数需要以某种方式定义。
【解决方案2】:
n_epochs = 2
n_freqs = 7
# form giving parameters for the array

data2 = np.zeros((n_epochs, n_freqs), dtype=complex)
for i in range(0,n_epochs):
     data2[i] = np.real(data[i]) + np.random.vonmises(mu, kappa) * complex(0,1)

它使我的整个n_epoch 具有相同的虚值。不完全符合我的要求,但解决了我的问题。

【讨论】:

    【解决方案3】:

    尝试使用这种方法:

    • 将数字存储到二维数组中:实部和虚部。
    • 然后用随机选择的数字替换虚部。

    【讨论】:

    • 我也想过这个解决方案,但是我的数组不能改变。我需要它以相同的形式进行以后的计算
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-04
    • 2020-05-16
    • 1970-01-01
    • 2021-01-10
    • 1970-01-01
    • 2022-01-20
    • 1970-01-01
    相关资源
    最近更新 更多