numpy 多位陣列的運用

2021-08-14 16:50:31 字數 3195 閱讀 5983

寫乙個指令碼讀取。csv 檔案存入資料庫,本來是想使用dictreader 來直接生成字典,sqlalcharm 直接插入資料庫,但是由於檔案是產品使用,填寫,都是英文 列頭 看不太明白,行列也不是可以直接使用的設計。如果按照容易插入資料但是 這樣使用文件的時候不方便。所以我就轉換了一些。御用到了 numpy 多維陣列,按照列每列都是乙個 資料物件。使用到二維陣列,通過座標來讀取

rule2.py **

主要是用來解析csv 檔案 ,然後返回每個物件,用來插入資料庫。

import csv

import numpy as np

from yang.all_test.day16.rule_operator import operation

data = dict()

data[1] = "nickname"

data[2] = "***"

data[3] = "birthday"

data[4] = "height"

data[5] = "hometown"

data[6] = "occupation_id"

data[7] = "school"

data[8] = "degree_id"

data[9] = "i_am"

data[10] = "i_like"

data[11] = "i_dislike"

data[12] = "i_hope"

data[13] = "book"

data[14] = "movie"

data[15] = "music"

data[16] = "sport"

defget_data

():with open('matchrule.csv', 'rt', encoding='utf8') as c:

reader = csv.reader(c)

rows = [row[1:] for row in reader]

#使用 numpy 轉化為陣列, a 現在就是乙個二維陣列

a = np.array(rows)

# k 用來存每乙個物件

k = list()

row = [i for i in range(len(a))]

for i in range(len(a[0])):

col = list()

for j in range(len(a)):

y = a[row, col]

# y = a[[0, 1, 2, 3], [0, 0, 0, 0]]

# 程式的弊端是 比較依賴csv 檔案按照要求寫, 目前程式的容錯和健壯性不是特別好。

# 這裡還要保證 列表是有序輸出的,這樣才能對得上

# 獲取所有要新增的物件資料(元素,字典物件, 對資料進行處理)

instance = operation()

obj_data_list = list()

for one in k:

data_temp = dict()

for index, element in enumerate(one):

key = data.get(index, "")

if key:

element = instance.get_element(key, element)

data_temp[key] = element

print(obj_data_list)

return obj_data_list

# get_data()

rule_operator.py

用來處理存入資料庫之前 資料格式,容錯, 獲取,賦值的操作等

from tools.ohho_datetime import ohhodatetime

from ohho.common.db.ohho.base.db_ohho_interest import dbohhointerest

list_ele = ["i_am", "i_like", "i_dislike", "i_hope"]

class

operation

(object):

def__init__

(self):

self.interest = dbohhointerest()

defget_element

(self, key, element):

# result[key] = ohhodatetime.clock2string(ohhodatetime.utc2beijing(value))

if key == "birthday":

element = element.split("(")[0]

element = ohhodatetime.string2date(element)

elif key == "occupation_id":

degree_id = self.interest.get_by_key(element)

ifnot degree_id:

element = 0

else:

element = degree_id.id

elif key == "degree_id":

degree_id = self.interest.get_by_key(element)

ifnot degree_id:

element = 0

else:

element = degree_id.id

elif key in list_ele:

import re

rep = element.replace('\n', "")

b = re.split(';|;', rep) # 中文分號,和英文分號容錯

data = dict()

data["first"] = b[0] if len(b) > 0

else

"" data["second"] = b[1] if len(b) > 1

else

"" data["third"] = b[2] if len(b) > 2

else

"" element = data

return element

insert_data.py 就是一些業務邏輯和 資料之間的互動

多位數乘法計算

option base 1 private sub command1 click dim m as string dim n as string m trim text1.text n trim text2.text dim number1 as byte dim number2 as byte r...

彙編 多位數相加

上一次彙編寫到,只是個位數的簡單相加,只需要判斷兩者相加有無進製,進製即進一,在輸出視窗輸出一先。遇到多位數後,會變複雜很多,事實上彙編裡面可以實現相加,難題在於需要把和轉成ascii碼顯示在dos視窗。所以需要把和乙個乙個數提取,轉成ascii。程式如下 datas segment op1 dw ...

004 美化多位數字

將給定的數字以逗號分隔的形式顯示出來 bin bash filename nicenum.sh 可接受兩個選項 dd decimal pointa,小數分隔符 和td thousands delimiter,千位分隔符 nicenumber decimal fi thousands int whil...