Преобразование списка номеров деталей в двумерный массив ширины / длины для отображения в сетке

1) Вы установили неверную опцию для количества файлов в ноль. Установите его равным единице:

var cpUpload = upload.fields([{ name: 'image', maxCount: 1 }]);

2) Плохая идея сделать путь до хранилища от корня. У родственника:

cb(null, 'uploads/')
0
задан wmfox3 19 January 2019 в 15:58
поделиться

1 ответ

Я повторял этот ответ много раз, так что я надеюсь, что это последний раз

Ответ состоит из двух вещей:

1) Подготовка данных: я не знаю Ваш набор данных, но я буду угадывать

2) Отображение данных

<час>

1) а) Подготовка данных

Я знаю об одном простом решении который может решить все ваши проблемы с подготовкой данных. Но одно условие должно быть выполнено, и это то, что ваши ширины и длины являются целыми числами. Если это так, то решение легко: допустим, максимальная ширина равна 10, а максимальная длина тоже равна 10.

Вы создаете сетку 11x11 в numpy (потому что от 0 до 10 - это 11 ячеек)

# chararray because you can initialize
# grid with being empty (empty string fields)
grid=np.chararray(shape=[11,11]) 

for part in part_list:
    grid[part.width,part.length] = str(part.part_number)
    #If you have 2 parts with same parameter you can sum up string so its flexible

Таким образом, в основном вы можете использовать индексы массива в качестве фактических параметров width и long [1112 ]

1) б) Подготовка данных

Ваша проблема каким-то образом запала мне в голову, пока я не нашел общее решение вашей проблемы (хотя я до сих пор не знаю ваш набор данных). На основе приведенного выше примера , если ваши параметры в любой форме (int, float, string), вы можете сделать это

# Lets say you have 3 types of widths and lengths and you index them 
# Key is your parameter, value is index position in grid
widths = {'7.2mm':0,'9.6mm':1,'11.4mm':2}
lengths = {'2.2mm':0,'4.8mm':1,'16.8mm':2}

header = [h for h in widths] # useless in this example
side = [s for s in lengths ] # but can serve for Data display part


grid=np.chararray(shape=[3,3])

for part in part_list:
    index_width = widths[part.width]
    index_lentgh = lengths[part.length]
    grid[index_width ,index_lentgh] = str(part.part_number)

# This way, you dont need to care about missing part numbers and grid can stay unfilled

2) Отображение данных [1115 ]

from prettytable import PrettyTable

def table(header,side,data):
    t = PrettyTable(['']+header)
    for i in range(len(data)):
        t.add_row([side[i]]+list(data[i]))
    print(t)

header = ['col1','col2','col3']
side =   ['row1','row2','row3']
data =   np.zeros(shape=[3,3])
>> table(header,side,data)

+------+------+------+------+
|      | col1 | col2 | col3 |
+------+------+------+------+
| row1 | 0.0  | 0.0  | 0.0  |
| row2 | 0.0  | 0.0  | 0.0  |
| row3 | 0.0  | 0.0  | 0.0  |
+------+------+------+------+

Вы можете кормить его чем угодно (например, классами)

data2 = [['','',PrettyTable],['World','',5],['','Hello','']]
table(header,side,data)
>>> table(header,side,data2)
+------+-------+-------+-----------------------------------+
|      |  col1 |  col2 |                col3               |
+------+-------+-------+-----------------------------------+
| row1 |       |       | <class 'prettytable.PrettyTable'> |
| row2 | World |       |                 5                 |
| row3 |       | Hello |                                   |
+------+-------+-------+-----------------------------------+

РЕДАКТИРОВАТЬ: Основываясь на данных выборки, я смог сделать то, что требовалось:

import numpy as np
widths = {'#10-24':0, '#10-32':1, '1/4-20':2, '5/16-18':3, '3/8-16':4, '1/2-13':5, '5/8-11':6, '3/4-10':7} # My data dictionary looks like
lenghts = {'5/8':0,'3/4':1,'7/8':2}
part_list = [{'part_number': 'FTC19-62', 'width': '#10-24', 'length': '5/8'},
        {'part_number': 'FTC19-75', 'width': '#10-32', 'length': '3/4'},
        {'part_number': 'FTC19-87', 'width': '#10-24', 'length': '7/8'}]

grid=np.chararray(shape=[len(lenghts),len(widths)]).astype('|S8')
grid[:,:] = ''

for part in part_list:
    index_width = widths[part['width']]
    index_lentgh = lenghts[part['length']]
    grid[index_lentgh,index_width] = str(part['part_number'])

header = sorted(widths, key=lambda k: widths[k])
side = sorted(lenghts, key=lambda k: lenghts[k])
from prettytable import PrettyTable

def table(header,side,data):
    t = PrettyTable(['']+header)
    for i in range(len(data)):
        t.add_row([side[i]]+list(data[i]))
print(t)


table(header,side,grid)


+-----+----------+----------+--------+---------+--------+--------+--------+--------+
|     |  #10-24  |  #10-32  | 1/4-20 | 5/16-18 | 3/8-16 | 1/2-13 | 5/8-11 | 3/4-10 |
+-----+----------+----------+--------+---------+--------+--------+--------+--------+
| 5/8 | FTC19-62 |          |        |         |        |        |        |        |
| 3/4 |          | FTC19-75 |        |         |        |        |        |        |
| 7/8 | FTC19-87 |          |        |         |        |        |        |        |
+-----+----------+----------+--------+---------+--------+--------+--------+--------+
>>> 
0
ответ дан Martin 19 January 2019 в 15:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: