iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python练手,numpy.genfr
  • 794
分享到

Python练手,numpy.genfr

Pythonnumpygenfr 2023-01-31 06:01:06 794人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

# -*- coding: utf-8 -*- ''' about numpy.genfromtxt, means generate from txt file https://docs.scipy.org/doc/numpy/ref

# -*- coding: utf-8 -*-

'''
about numpy.genfromtxt, means generate from txt file


https://docs.scipy.org/doc/numpy/reference/generated/numpy.genfromtxt.html

numpy.genfromtxt(fname, dtype=<type 'float'>, comments='#', delimiter=None, skip_header=0, skip_footer=0,
                        converters=None, missing_values=None, filling_values=None, usecols=None, names=None,
                        excludelist=None, deletechars=None, replace_space='_', autostrip=False, case_sensitive=True, 
                        defaultfmt='f%i', unpack=None, usemask=False, loose=True, invalid_raise=True, max_rows=None, 
                        encoding='bytes')

See also
    numpy.loadtxt equivalent function when no data is missing.

'''
from cryptography.hazmat.primitives.serialization import Encoding








# ndarray_fromtxt_lt = numpy.loadtxt('data.txt',delimiter=',',dtype=numpy.str)
# # ndarray_fromtxt_lt = numpy.loadtxt(open('data.txt','r',encoding='utf-8'),delimiter=',',dtype=numpy.str)
# # ndarray_fromtxt_lt = numpy.loadtxt(fname, dtype, comments, delimiter, converters, skiprows, usecols, unpack, ndmin)
# print(type(ndarray_fromtxt_lt))
# print(ndarray_fromtxt_lt)

# ndarray_data = numpy.genfromtxt(fname='data.txt', dtype=str,delimiter, skip_header, skip_footer, converters, missing_values, filling_values, usecols, names, excludelist, deletechars, replace_space, autostrip, case_sensitive, defaultfmt, unpack, usemask, loose, invalid_raise, max_rows)
# file = open('data.txt',encoding='utf-8')

'''
    -使用场景:数据转换 (编码转换、值转换)
    -关键参数:converters
        The set of functions that convert the data of a column to a value. 
        The converters can also be used to provide a default value for missing data: converters = {3: lambda s: float(s or 0)}.
        -它是函数的集合,可以编写函数(或者使用lambda)对某列的值进行转换,常用的场景有:编码转换、值转换等
        -特别注意!!! 
        -    1、转换函数的输入,默认都是bytes类型,跟encoding参数有关,跟dtype参数无关。
        -        dtype影响数据的最终呈现形式
        -        encoding影响数据处理过程
        -            关于encoding参数的官方说明:
        -                Override this value to receive unicode arrays and pass strings as input to converters. 
        -                If set to None the system default is used. The default value is ‘bytes’.
        -    2、转换函数的返回的类型,必须跟设置的dtype保持一致,否则会造成不可预料的数据丢失。
        -       例如,genfromtxt设置dtype=str,即所有列的类型都是str,那么,转换函数的返回类型也必须是str
        -    3、如果数据中含有中文,可能会跟windows系统默认的ascii字符集冲突,需要转码为utf-8
'''

import os

os.remove('data.txt')
fo = open('data.txt','a',encoding='utf-8')
fo.write("001,张三,man,24\n")
fo.write("002,李四,man,24\n")
fo.close()

import numpy

def convUTF8(x):
    return x.decode('utf-8')

def convAdd(x):
    return str(x,encoding='utf-8') + '+'

'''正确示范:单列处理'''
ndarry_1 = numpy.genfromtxt(fname='data.txt',delimiter=',',dtype=str,
                            converters={1: convUTF8})
print(ndarry_1)
# [['001' '张三' 'man' '24']
#  ['002' '李四' 'man' '24']]

'''正确示范:多列处理'''
ndarry_1 = numpy.genfromtxt(fname='data.txt',delimiter=',',dtype=str,
                            converters={1: convUTF8, 
                                        2: lambda x: x.decode('utf-8') })
print(ndarry_1)
# [['001' '张三' 'man' '24']
#  ['002' '李四' 'man' '24']]

'''错误示范:因为转换函数的返回类型没有跟输入类型保持一致,会造成数据丢失'''
ndarry_1 = numpy.genfromtxt(fname='data.txt',delimiter=',',dtype=str,
                            converters={1: lambda x: 1})
print(ndarry_1)
# [('', 1, '', '') ('', 1, '', '')]

'''错误示范:对于一个列,只能一个转换函数,且只能处理一次,设置多次,是无效的'''
ndarry_1 = numpy.genfromtxt(fname='data.txt',delimiter=',',dtype=str, 
                            converters={1: convUTF8, 
                                        0: convAdd,
                                        0: convAdd})
print(ndarry_1)
# [['001+' '张三' 'man' '24']
#  ['002+' '李四' 'man' '24']]

'''
    -使用场景:设置列的格式
    -关键参数:dtype
    -    Data type of the resulting array. 
    -    If None, the dtypes will be determined by the contents of each column, individually.
    -    作为ndarray中的元素,dtype可以设置数据类型
'''

os.remove('data.txt')
fo = open('data.txt','a',encoding='utf-8')
fo.write("001,zhangsan,man,24\n")
fo.write("002,lisi,man,24\n") 
fo.close()

'''错误示范:dtype=None,自动格式,但是差强人意。对于非数字的列,默认是bytes'''
ndarry_1 = numpy.genfromtxt(fname='data.txt',delimiter=',',dtype=None)
print(ndarry_1)
# [(1, b'zhangsan', b'man', 24) (2, b'lisi', b'man', 24)]

'''正确示范:全部列设置统一的数据类型。对于不含有中文的数据,dtype=str是可以的,如果含有中文,除了设置dtype=str以外,还要用converters做转码'''
ndarry_1 = numpy.genfromtxt(fname='data.txt',delimiter=',',dtype=str)
print(ndarry_1)
# [['001' 'zhangsan' 'man' '24']
#  ['002' 'lisi' 'man' '24']]
'''正确示范:逐列设置数据类型。需要另外了解dtype的种类。'''
ndarry_1 = numpy.genfromtxt(fname='data.txt',delimiter=',',dtype=[('c0','<i8'),('c1','<U32'),('c2','|S3'),('c3','f4')])
print(ndarry_1)
# [(1, 'zhangsan', b'man', 24.0) (2, 'lisi', b'man', 24.0)]


'''
    -使用场景:数据切片
    -关键参数:dtype
    -    Data type of the resulting array. 
    -    If None, the dtypes will be determined by the contents of each column, individually.
    -    作为ndarray中的元素,dtype可以设置数据类型
'''


'''
    -使用场景:缺省值的处理
    -关键参数:dtype
    -    Data type of the resulting array. 
    -    If None, the dtypes will be determined by the contents of each column, individually.
    -    作为ndarray中的元素,dtype可以设置数据类型
'''

'''
    -使用场景:数据切片
    -关键参数:skip_header
    -    起始行
    -关键参数:max_rows
    -    最大行数
    -关键参数:usecols
    -    保留列
    -关键参数:comments (执行顺序是最后的,先做行列切片,再做删除注释行)
    -    注释符号。
    -        如果是行首注释,正行都会被舍弃;
    -        如果是行中其他位置的注释,会报错,以为改行被保留下来了,但是注释符号后面的字段丢失了。
'''

os.remove('data.txt')
fo = open('data.txt','a',encoding='utf-8')
fo.write("001,zhangsan,man,24\n")
fo.write("002,lisi,man,24\n")
fo.write("#003,wangwu,man,24\n")
fo.write("004,chenhua,wom,18\n")
fo.close()

'''正确示范:注意执行顺,先做行列切片,再做删除注释行'''
ndarry_1 = numpy.genfromtxt(fname='data.txt',delimiter=',',dtype=str,
                            skip_header=1,max_rows=3,
                            usecols=[0,2],
                            comments='#',
                            )
print(ndarry_1)
# [['002' 'man']
#  ['004' 'wom']]


'''
    -使用场景:填补缺失值(当dtype=None时,填补缺失值这个功能较好用,当dtype=str时,这个功能不生效,要再摸索)
    -关键参数:missing_values
    -    标记为缺失
    -关键参数:filling_values
    -    对缺失的位置进行填补
'''
os.remove('data.txt')
fo = open('data.txt','a',encoding='utf-8')
fo.write("10,11,,13\n")
fo.write("10,21,22,23\n")
fo.write("10,31,32,33\n")
fo.close()
'''正确示范:某列的缺失进行具体设置(其他列是默认缺失),全部列统一默认填补'''
ndarry_1 = numpy.genfromtxt(fname='data.txt',delimiter=',',dtype=None,
                            missing_values={0:10},
                            filling_values=999
                            )
print(ndarry_1)
# [[999  11 999  13]
#  [999  21  22  23]
#  [999  31  32  33]]
'''正确示范:某列的缺失,某列的填补'''
ndarry_1 = numpy.genfromtxt(fname='data.txt',delimiter=',',dtype=None,
                            missing_values={0:10},
                            filling_values={0:777,2:999}
                            )
print(ndarry_1)
# [[777  11 999  13]
#  [777  21  22  23]
#  [777  31  32  33]]
'''正确示范:所有列的缺失进行统一设置(但是默认缺失还是生效了)'''
ndarry_1 = numpy.genfromtxt(fname='data.txt',delimiter=',',dtype=None,
                            missing_values=10,
                            filling_values={0:777,2:999}
                            )
print(ndarry_1)
# [[777  11 999  13]
#  [777  21  22  23]
#  [777  31  32  33]]


--结束END--

本文标题: Python练手,numpy.genfr

本文链接: https://www.lsjlt.com/news/190076.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python练手,numpy.genfr
    # -*- coding: utf-8 -*- ''' about numpy.genfromtxt, means generate from txt file https://docs.scipy.org/doc/numpy/ref...
    99+
    2023-01-31
    Python numpy genfr
  • Python练手,pandas
    ''' http://pandas.pydata.org/pandas-docs/stable/10min.html     numpy的主要数据结构是ndarry     pandas的主要数据结构是Series、DataFrame '...
    99+
    2023-01-31
    Python pandas
  • Python练手,样本
    import pandas as pd def getEmpDataFrame(num):          '''创建一份可复用的数据,有一定的随机性和真实性'''          #员工编号     emp = [''] * num...
    99+
    2023-01-31
    样本 Python
  • Python练手例子(1)
    1、有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少? 程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去 掉不满足条件的排列。 #本人的运行环境为python3.7 coun...
    99+
    2023-01-30
    例子 Python
  • Python练手例子(6)
    31、请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母。 程序分析:用情况语句比较好,如果第一个字母一样,则判断用情况语句或if语句判断第二个字母。 letter = input('Please in...
    99+
    2023-01-30
    例子 Python
  • Python练手例子(15)
    85、输入一个奇数,然后判断最少几个 9 除于该数的结果为整数。 程序分析:999999 / 13 = 76923。 #!/usr/bin/python #coding=utf-8 if __name__ == '__main__':...
    99+
    2023-01-30
    例子 Python
  • Python练手例子(8)
    43、模仿静态变量(static)另一案例。 程序分析:演示一个python作用域使用方法。 #python3.7 class Num: nNum = 1 def inc(self): self.nNu...
    99+
    2023-01-30
    例子 Python
  • Python练手例子(7)
    37、对10个数进行排序。 程序分析:可以利用选择法,即从后9个比较过程中,选择一个最小的与第一个元素交换,下次类推,即用第二个元素与后8个进行比较,并进行交换。 #python 3.7 if __name__ == '__main_...
    99+
    2023-01-30
    例子 Python
  • Python练手例子(12)
    67、输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。 #python3.7 def inp(numbers): for i in range(6): numbers.append(int...
    99+
    2023-01-30
    例子 Python
  • python随手小练1
    题目: 使用python做一个简单的英雄联盟商城登录界面 具体操作: print("英雄联盟商城登录界面")print("~ * "*15 + "~") #找其规律a = "1、用户登录"b = "2、新用户注册"c = "...
    99+
    2023-10-08
    python 前端 服务器 学习 笔记 算法 后端
  • Python练手例子(11)
    61、打印出杨辉三角形。 #python3.7 from sys import stdout if __name__ == '__main__': a = [] for i in range(10): ...
    99+
    2023-01-30
    例子 Python
  • Python练手例子(2)
    7、将一个列表的数据复制到另一个列表中。 程序分析:使用列表[:]。 #python3.7 #适用于简单列表(即列表中都是基本的元素) a1 = [1,2] b1 = a1[:] print(b1) #不适合列表中包含列表的情况,如...
    99+
    2023-01-30
    例子 Python
  • Python练手例子(3)
    13、打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。 程序分析:利用for循环控制100-999个数,每个数分解出个...
    99+
    2023-01-30
    例子 Python
  • Python练手例子(13)
    73、反向输出一个链表。 #python3.7 if __name__ == '__main__': ptr = [] for i in range(5): num = int(input('Pleas...
    99+
    2023-01-30
    例子 Python
  • Python练手例子(4)
    16、一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程找出1000以内的所有完数。 程序分析:请参照程序Python 100例中的第14个例子 #python3.7 from sys import std...
    99+
    2023-01-30
    例子 Python
  • Python练手例子(10)
    55、学习使用按位取反~。 程序分析:~0=1; ~1=0; (1)先使a右移4位。 (2)设置一个低4位全为1,其余全为0的数。可用~(~0<<4) (3)将上面二者进行&运算。 #python3.7 if __...
    99+
    2023-01-30
    例子 Python
  • Python练手经典100例
    本博文转载自:http://blog.csdn.net/dajiangtai007/article/details/65632987 100个Python练手小程序,学习python的很好的资料,覆盖了python中的每一部分...
    99+
    2023-01-31
    经典 Python
  • 10个Python练手项目
    标记一下Python的练手项目10个Python练手项目:python项目练习一:即时标记python项目练习二:画幅好画python项目练习三:万能的XMLpython项目练习四:新闻聚合python项目练习五:虚拟茶话会python项...
    99+
    2023-01-31
    项目 Python
  • python 练手 -- 媒体播放器
      可以播放大部分的音视频. demo download:  http://www.sandy1219.com/python/media.rar   playMP3.py # -*- coding: utf-8 -*- import w...
    99+
    2023-01-31
    媒体播放器 python
  • 分享Python练手小项目
    本篇内容介绍了“分享Python练手小项目”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1. Kaggle 实战之波士顿房价预测友情提示:初...
    99+
    2023-06-15
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作