首页 > 编程问答 >TypeError:ufunc 的循环不支持 dict 类型的参数 0,该类型没有可调用的 sqrt 方法

TypeError:ufunc 的循环不支持 dict 类型的参数 0,该类型没有可调用的 sqrt 方法

时间:2024-08-01 07:12:00浏览次数:13  
标签:python

我遇到了一个错误:

psi_out_norm.append(np.sqrt(sorted_probs))
TypeError: loop of ufunc does not support argument 0 of type dict which has no callable sqrt method

不知道如何解决此错误。下面是我正在处理的代码:

num_qubits = 2
sorted_probs = {'00': 0.1826131640519985, '01': 0.3015290853531944, '10': 0.3171301575715357, '11': 0.1987275930232714}
all_possible_keys = [format(i, f'0{num_qubits}b') for i in range(2**num_qubits)]

     
    psi_out_norm = []
    for key in all_possible_keys:  
        count = sorted_probs.get(key, 0) # use 0 is the key is missing
        psi_out_norm.append(np.sqrt(sorted_probs))

如果有人可以帮助我解决这个错误,那将会有很大的帮助。


错误在于尝试对字典 sorted_probs 进行 np.sqrt 运算,而不是对字典中的值进行运算。

需要将 np.sqrt 应用于从字典中提取的 ,而不是字典本身。

以下是修正后的代码:

import numpy as np

num_qubits = 2
sorted_probs = {'00': 0.1826131640519985, '01': 0.3015290853531944, '10': 0.3171301575715357, '11': 0.1987275930232714}
all_possible_keys = [format(i, f'0{num_qubits}b') for i in range(2**num_qubits)]

psi_out_norm = []
for key in all_possible_keys:  
    count = sorted_probs.get(key, 0) # use 0 is the key is missing
    psi_out_norm.append(np.sqrt(count)) # 计算 count 的平方根,而不是 sorted_probs

print(psi_out_norm)

这段代码将 np.sqrt 应用于 count 变量,该变量保存从字典中提取的值。这将解决 TypeError 并生成预期的输出。

标签:python
From: 78818538

相关文章