• 企业400电话
  • 网络优化推广
  • AI电话机器人
  • 呼叫中心
  • 全 部 栏 目

    网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    浅谈Python numpy创建空数组的问题
    POST TIME:2021-10-18 13:46

    一、问题描述:

    有一个shape为(308, 2)的二维数组,以及单独的一个数字,需要保存到csv文件中,这个单独的数字让其保存到第3列第一行的位置。

    二、具体的实现:

    首先要想把一个(308, 2)的二维数组和一个数字给拼接起来,直接拼接没办法实现,因为行数和列数都不同的两个ndarry是无法拼接的(此处按照目前我学的理解,是无法直接拼接的,如果可以的话,麻烦评论一下)。

    然后我首先想到的解决方法就是先建一个(308,1)的二维数组,然后令这个二维数组的第一个元素设置成那个数字,然后进行拼接,保存。

    为使数据可以显示完全,以仅以3行数据为例:

    >>> a = np.ones((3,2))
    >>> b = 0.2
    >>> _b = np.empty((3,1))
    >>> _b[0, 0] = b
    >>> c = np.c_[a, _b]
    >>> print(c)
    [[1.00000000e+000 1.00000000e+000 2.00000000e-001]
     [1.00000000e+000 1.00000000e+000 2.12199579e-313]
     [1.00000000e+000 1.00000000e+000 2.54639495e-313]]
    >>>
    

    但是这样,我把结果保存到文件时,第3列的除第一行,其他的行是有数据的,我不想让它显示数据。
    也就是empty这个函数只是创建一个未初始化的数组,实际上里面的数值都是垃圾值。

    那么如何去实现视觉上没有数据呢,其实利用空的字符串就可以了

    所以就通过np.ones设置dtype为str,此时生成的是元素都为空字符串的数组,(具体的原因还不清楚),然后此时若直接设置第一行的元素为某个值,是不行的,会自动变为'0‘,只有在拼接之后,然后再给它赋值才可以,这个地方我不是很理解,但是结果是正确的。

    三、完整代码:

    y_true = np.ones((3, 1), dtype=np.int)
    y_pred = np.ones((3, 1), dtype=np.int)
    y = np.c_[y_true, y_pred]
    
    accuracy = np.zeros(shape=(y_true.shape[0], 1), dtype=np.str)
    
    # 此时若设置accuracy[0, 0] = '0.89',最终accuracy[0, 0]存的是'0',具体原因还不清楚
    
    res = np.c_[y, accuracy]  # 先拼接起来
    res[0, 2] = '0.89'  # 然后再设置就可以了
    
    res = pd.DataFrame(res, columns=['y_true', 'y_pred', 'accuracy'])
    res.to_csv('1.csv')  # 保存到文件中
    

    从文件中读取的时候,直接读出来,空白的地方被赋值为nan

    a = pd.read_csv('1.csv', usecols=(1, 2, 3))
    a = a.values
    print(a, type(a), a.dtype)

    关于np.nan需要注意的地方如下:

    import numpy as np
     
    np.nan == np.nan
    Out[3]: False
     
    aa = np.array([1,2,3,np.nan,np.nan,4,5,np.nan])
    aa
    Out[5]: array([  1.,   2.,   3.,  nan,  nan,   4.,   5.,  nan])
     
    aa[aa==np.nan] = 100  #错误方式
    aa
    Out[7]: array([  1.,   2.,   3.,  nan,  nan,   4.,   5.,  nan])
     
    aa[np.isnan(aa)] = 100  #对nan操作的正确方式
    aa
    Out[9]: array([   1.,    2.,    3.,  100.,  100.,    4.,    5.,  100.])
     
    type(np.nan)
    Out[10]: float
    

    关于参考:https://www.jb51.net/article/212249.htm

    到此这篇关于浅谈Python numpy创建空数组的问题的文章就介绍到这了,更多相关numpy创建空数组内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    您可能感兴趣的文章:
    • Python NumPy灰度图像的压缩原理讲解
    • Python多进程共享numpy 数组的方法
    • python中sqllite插入numpy数组到数据库的实现方法
    • python图像处理基本操作总结(PIL库、Matplotlib及Numpy)
    • python numpy中multiply与*及matul 的区别说明
    • Python NumPy中diag函数的使用说明
    • Python机器学习三大件之一numpy
    • python利用numpy存取文件案例教程
    上一篇:python实现语音常用度量方法的代码详解
    下一篇:python调试工具Birdseye的使用教程
  • 相关文章
  • 

    关于我们 | 付款方式 | 荣誉资质 | 业务提交 | 代理合作


    © 2016-2020 巨人网络通讯

    时间:9:00-21:00 (节假日不休)

    地址:江苏信息产业基地11号楼四层

    《增值电信业务经营许可证》 苏B2-20120278

    X

    截屏,微信识别二维码

    微信号:veteran88

    (点击微信号复制,添加好友)

     打开微信