ন্যালি অ্যারে মানের ম্যাট্রিক্স চিত্র পান - ভিতরে পিক্সেল মান সহ গ্রিড (রঙ নয়)


9

আমি অনলাইনে অনুসন্ধান করেছিলাম এবং এই বিষয়ে কিছুই খুঁজে পেলাম না যা আমি চাই does

আমি একটি চিত্র হিসাবে একটি ন্পী অ্যারে সংরক্ষণ করতে চাই তবে রঙিন চিত্রের পরিবর্তে, আমি তাদের সংশ্লিষ্ট গ্রিডের স্থানে পিক্সেলের মানগুলির একটি কালো এবং সাদা উপস্থাপনা চাই।

উদাহরণ স্বরূপ:

import numpy as np
x = np.array([[1,2],[3,4]])
print(x)
# [[1 2]
#  [3 4]]

আমি এটিকে একটি চিত্র (.PNG) হিসাবে সংরক্ষণ করতে চাই যা নীচের মত দেখাচ্ছে:

প্রত্যাশিত আউটপুট

আমার বর্তমান কোডটি গ্রিড তৈরি করে এবং সংখ্যাগুলি ভিতরে রাখে তবে এটি গবেষণামূলক গবেষণাপত্রে উপস্থাপনযোগ্য করার জন্য সবকিছুকে সামঞ্জস্য করা খুব কঠিন।

সুতরাং আমার অত্যধিক জটিল কোড পোস্ট করার চেয়ে আমি ভাবছিলাম যে কোডের কয়েকটি লাইনে এটি হ্যান্ডেল করার জন্য কোনও বিল্ট ইন ফাংশন রয়েছে কিনা।


1
দেখে মনে হচ্ছে tableশুরু করার ভাল জায়গা হবে। আমি একটি ভাল উত্তর দিতে যথেষ্ট ব্যবহার করে নি।
ওয়ারেন ওয়েকেকসার

1
ব্যবহার করে এমন উদাহরণের জন্য 'টেবিল ডেমো' দেখুন table
ওয়ারেন ওয়েকেকসার

4
রাস্টার ইমেজের বিপরীতে আপনি কোনও কাগজে রাখার চেষ্টা করছেন এমন টেবিলের জন্য আমি লটেক্স ব্যবহার করব।
alkasm

@ এলকাসম জিনিসটি হ'ল আমার আসল ম্যাট্রিকগুলি অনেক বড় (14x14 বা 28x28) এবং তাদের জন্য আমার অনেকগুলি চিত্র তৈরি করা দরকার, সুতরাং ল্যাটেক্সে ম্যানুয়ালি এটি করা খুব অদক্ষ পদ্ধতির মতো বলে মনে হচ্ছে।
lbragile

5
বিপরীতে, চিত্রগুলিতে ছড়িয়ে পড়া অকার্যকর পদ্ধতির মতো শোনাচ্ছে। ডেটা টেবিলগুলি ইমেজ নয় এবং তাই যেমন ব্যবহার করা উচিত নয়। আপনি খুব সহজেই ম্যানুয়ালি এমনকি ল্যাটেক্স স্বয়ংক্রিয়ভাবে জেনারেট করতে পারেন।
alkasm

উত্তর:


12

আমি টেবিলগুলি তৈরি করতে ল্যাটেক্স ব্যবহার করব, যেহেতু তারা অভিনব দেখায় এবং আপনি হয় কোনও চিত্র তৈরি করতে পারেন বা এগুলি সরাসরি আপনার নথিতে রেখে দিতে পারেন। এটি অর্জনের জন্য আমি নিম্নলিখিত কোড ব্যবহার করেছি:

#!/usr/bin/env
import numpy as np
import os

x = np.array([[1,2],[3,4]])

def generateLatexTable(x):
    start = [r'\documentclass[preview]{standalone}', r'\begin{document}', r'\begin{tabular}{%s}' % ('{1}{0}{1}'.format('|'.join(['r'] * x.shape[1]), '|')), r'\hline']
    tab = [' & '.join(['%d' % val for val in row]) + r' \\ \hline' for row in x]
    end = [r'\end{tabular}', r'\end{document}']
    text = '\n'.join(start + tab + end)

    return text

with open('table.tex', 'w') as f:
    f.write(generateLatexTable(x))
os.system("pdflatex table.tex")

এখানে ডকুমেন্ট ক্লাস previewব্যবহার করা হয় যা ডকুমেন্টের সামগ্রীতে অর্থাত্ কেবল টেবিলের আকার পরিবর্তন করে একটি চিত্র দেয়। tabularতথ্য উপস্থাপনের জন্য শুধুমাত্র একটি পরিবেশ ব্যবহৃত হয়। কক্ষগুলির মধ্যে অনুভূমিক এবং উল্লম্ব বার রয়েছে তবে এটি পরিবর্তন করা খুব সহজ। ভেরিয়েবলে tabডেটা প্রতিটি সারির জন্য প্রক্রিয়া করা হয় এবং একটি স্ট্রিংয়ে রূপান্তরিত হয়। নোট করুন যে আপনাকে এই অবস্থানে আউটপুট ফর্ম্যাট নির্দিষ্ট করতে হবে। আমি এটি সেট করে রেখেছি %dযাতে সবকিছু পূর্ণসংখ্যায় রূপান্তরিত হয়।

আপনি যদি একটি ক্ষীর উৎস সরাসরি টেবিল ব্যবহার করতে চান, তাহলে আপনি অপসারণ করতে হবে documentclassএবং \begin{document}সেইসাথে \end{document}এর ভেরিয়েবলের মধ্যে startএবং end। অবশেষে, সমস্ত কিছু ল্যাটেক্স উত্সে একসাথে রাখা হয় যা পরে ডিস্কে সংরক্ষণ করা হয় table.tex। আপনি যদি শেষ পর্যন্ত চিত্রটি চান তবে ফলাফলটি ফাইলটি সংকলিত হবে table.pdf

আউটপুট কেমন দেখাচ্ছে তা এখানে Here তবে আমি যেমন বলেছিলাম, চেহারাটি পরিবর্তন করা খুব সহজ কারণ এটি ল্যাটেক্স :)

টেবিল

0 থেকে 100 এর মধ্যে এলোমেলো সংখ্যায় ভরা বড় ম্যাট্রিক্স (14 x 14) এর সাথে এখানে আরও একটি উদাহরণ রয়েছে:

টেবিল ২


8

আপনি সাধারণ টেবিলটি প্লট করতে tableফাংশনটি ব্যবহার করতে পারেন matplot। তদতিরিক্ত, আপনি প্লটটি পিএনজি হিসাবে সংরক্ষণ করতে পারেন। নীচে আপনার প্রয়োজনীয়তার জন্য সহজ কোডটি রয়েছে:

import numpy as np
import matplotlib.pyplot as plt

x = np.array([[1,2],[3,4]])

plt.figure()
plt.table(cellText=x,cellLoc='center',loc='center')
plt.axis('off')
plt.savefig('table.png')

figsizeলাইনে পরামিতি পরিবর্তন করে প্লট বা চিত্রের আকার সামঞ্জস্য করা যেতে পারে :plt.figure(figsize=(x,y))

আরও ভাল চেহারা জন্য, এটি নীচের মত পরিবর্তন করা যেতে পারে:

import numpy as np
import matplotlib.pyplot as plt

x = np.array([[1,2],[3,4]])

fig = plt.figure(figsize=(2,2))
plt.axis('off')
plt.axis('tight')
plt.table(cellText=x,cellLoc='center',loc='center')
#plt.subplots_adjust(hspace=0.5)
fig.tight_layout()
plt.savefig('table.png')

3
আমি প্রায় এরকম কিছু করবfig = plt.figure(figsize = x.shape)
ড্যানিয়েল এফ

4

এই সাহায্য করবে হতে পারে:

from matplotlib import pyplot as plt
import numpy as np

w  = 10
h  = 10 
img = np.random.randint(255, size=(w, h))
plt.figure(figsize=(5,8))
plt.imshow(img, interpolation='nearest')
plt.axis('off')

cellTextimg =  []
for j in range(0,h):
    cellTextimg.append(img[j,:])

the_table = plt.table(cellText= cellTextimg, loc='bottom')
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.