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

已经安装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日

悬赏问题

  • ¥20 iqoo11 如何下载安装工程模式
  • ¥15 本题的答案是不是有问题
  • ¥15 关于#r语言#的问题:(svydesign)为什么在一个大的数据集中抽取了一个小数据集
  • ¥15 C++使用Gunplot
  • ¥15 这个电路是如何实现路灯控制器的,原理是什么,怎么求解灯亮起后熄灭的时间如图?
  • ¥15 matlab数字图像处理频率域滤波
  • ¥15 在abaqus做了二维正交切削模型,给刀具添加了超声振动条件后输出切削力为什么比普通切削增大这么多
  • ¥15 ELGamal和paillier计算效率谁快?
  • ¥15 蓝桥杯单片机第十三届第一场,整点继电器吸合,5s后断开出现了问题
  • ¥15 file converter 转换格式失败 报错 Error marking filters as finished,如何解决?