Bug~ 2022-05-22 03:02 采纳率: 75%
浏览 679
已结题

已经安装numpy,却 显示No module named 'numpy'

用gprMax产生bp成像结果。源代码如下:

import sys 
sys.path.append('D:/mygprmax/gprMax') # 把 gprMax 安装路径添加至系统,使 import 可以找到 gprMax 模块 
import numpy as np
from tools.plot_Bscan import get_output_data, mpl_plot 
import matplotlib.pyplot as plt 
from numba import jit

filename_target = r"D:\soil_cylinder_merged.out"#获取有目标回波数据文件 
rxnumber = 1 
rxcomponent = 'Ez' 
# 获取回波数据

outputdata_t, dt = get_output_data(filename_target, rxnumber, rxcomponent) 
plt.imshow(outputdata_t, 
extent=[0, outputdata_t.shape[1], outputdata_t.shape[0], 0], 
interpolation='nearest', 
                aspect='auto', cmap='gray', 
                vmin=-np.amax(np.abs(outputdata_t)), 
vmax=np.amax(np.abs(outputdata_t))) 
plt.show()

filename_back = r"D:\soil_background_merged.out"#获取背景回波数据文件 
rxnumber = 1 
rxcomponent = 'Ez' 
# 获取回波数据 
outputdata_b, dt = get_output_data(filename_back, rxnumber, rxcomponent) 
plt.imshow(outputdata_b, extent=[0, outputdata_b.shape[1], outputdata_b.shape[0], 0], 
interpolation='nearest', 
                aspect='auto', cmap='gray', 
                vmin=-np.amax(np.abs(outputdata_b)), 
vmax=np.amax(np.abs(outputdata_b))) 
plt.show()

target_back = outputdata_t-outputdata_b#有目标的数据减去背景数据,去除直达波 
plt.imshow(target_back, extent=[0, target_back.shape[1], target_back.shape[0], 0], 
interpolation='nearest', 
                aspect='auto', cmap='gray', 
                vmin=-np.amax(np.abs(target_back)), 
vmax=np.amax(np.abs(target_back))) 
plt.show()

@jit(nopython=True) 
def bp(outputdata, soil, timewindow, cell, exception):#BP 成像算法 
    ''' 
    :param outputdata: B-scan 数据 
    :param soil: 探测区域介质相对介电常数 
    :param timewindow: 时窗:param cell: 单元格大小,一般是 dx 
    :param exception: 默认为 0 
    :return: BP 结果 
    ''' 
    # time_rows -- 时间维采样点数 scans -- 扫描次数 
    time_rows, scans = outputdata.shape 
    # 时间维步进 
    dt = timewindow / time_rows 
    # 电磁波 
    c = 3e8 
    v = c / np.sqrt(soil) 
    # 实际探测区域的 x 长度 cell -- 天线步进,作为成像区域划分单位 
    domain_x = cell * scans 
    x_vec = np.arange(0, domain_x, cell) 
    # 根据时窗和波速算出 y 的实际长度 
    domain_y = cell * np.ceil(timewindow * v / 2 / cell) 
    y_vec = np.arange(0, domain_y, cell) 
    rows = y_vec.shape[0] # 成像区域行数 
    cols = x_vec.shape[0] # 成像区域列数 
    ans = np.zeros((rows, cols)) # 存储 bp 结果,空矩阵 
    for row in range(rows): 
        for col in range(cols): 
            ascan_curve = 0 # 存储当前单元格幅值和 
            for scan in range(scans): 
                d = 2 * np.sqrt(np.power((y_vec[row] - 0), 2) + np.power((x_vec[col] - x_vec[scan]), 2)) 
                time = d / v # 双程传播时间 
                serie = time / dt + exception # 时间索引 
                fix = int(serie) 
                ceil = int(np.ceil(serie)) 
                if serie < time_rows - 1 and serie > 0: 
                    ascan_curve += outputdata[fix][scan] + outputdata[ceil][scan] - (serie - fix) * outputdata[fix][scan] 
            ans[row][col] = ascan_curve 
    return ans

target_back_bp = bp(target_back,80,5e-9,0.002,50)#对去除直达波的数据进行 BP 成像 
plt.imshow(target_back_bp, extent=[0, target_back_bp.shape[1], target_back_bp.shape[0], 0], 
interpolation='nearest', 
                aspect='auto', cmap='gray', 
                vmin=-np.amax(np.abs(target_back_bp)), 
vmax=np.amax(np.abs(target_back_bp))) 
plt.show()

在命令窗口运行,返回错误

img


重装numpy

img

img


出现冲突,尚未解决

img


抱着试一试的想法重新运行,于是出现了这种错误,找不到numpy包,又无法安装因为已存在

img


使用pip list查看

img


请问该如何解决?

  • 写回答

2条回答 默认 最新

  • Bug~ 2022-05-27 11:35
    关注

    代码第二行,路径写错了,不是环境的问题!

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 6月4日
  • 已采纳回答 5月27日
  • 创建了问题 5月22日

悬赏问题

  • ¥15 nslt的可用模型,或者其他可以进行推理的现有模型
  • ¥15 arduino上连sim900a实现连接mqtt服务器
  • ¥15 vncviewer7.0安装后如何正确注册License许可证,激活使用
  • ¥15 phython如何实现以下功能?查找同一用户名的消费金额合并2
  • ¥66 关于人体营养与饮食规划的线性规划模型
  • ¥15 基于深度学习的快递面单识别系统
  • ¥15 Multisim仿真设计地铁到站提醒电路
  • ¥15 怎么用一个500W电源给5台60W的电脑供电
  • ¥15 请推荐一个轻量级规则引擎,配合流程引擎使用,规则引擎负责判断出符合规则的流程引擎模板id
  • ¥15 Excel表只有年月怎么计算年龄