דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
D

davidnead

@davidnead
אודות
פוסטים
382
נושאים
40
שיתופים
0
קבוצות
0
עוקבים
3
עוקב אחרי
0

פוסטים

פוסטים אחרונים הגבוה ביותר שנוי במחלוקת

  • np.unravel_index בjs
    D davidnead

    @odeddvir אמר בnp.unravel_index בjs:

    @davidnead אם מדובר תמיד במערך דו מימדי, אפשר על ידי מניפולציה פשוטה של חילוק שלם ומודולוס לקבל את האינדקסים, בלי צורך בפונקציה המורכבת הנ"ל.
    אבל עדיין לא נחה דעתי ממה שכתבת:

    ואם אני מדפיס את אותה שורה לעיל ושם בה את המספר הזה (הלא סביר) במקום הפונקציה שיוצרת אותו - אני מקבל שגיאה.

    השגיאה - לא מצליח לשחזר אותה. כנראה היה ממשהו שלא הבנתי מה אני עושה.

    חילוק ומודולוס-אני בדיוק מנסה לעשות את זה כעת.

    תוכנה

  • np.unravel_index בjs
    D davidnead

    @odeddvir אמר בnp.unravel_index בjs:

    אז ככה:
    אודה שלא התעמקתי עד הסוף, אבל כפי הבנתי הפונקציה ממירה אינדקס לינארי לאינדקס N מימדי, בהנתן גודל המימדים הרצוי.

    אני אנסה להמחיש על ידי דוגמא:

    נניח שאני רוצה לבנות בנין הדומה למבנה קוביה הונגרית, מימדי הקוביה הן 3x3x3.
    אם כן, הבניין יכיל 3 קומות ובכל קומה 9 דירות: 3 לאורך ו-3 לרוחב. סה"כ 27 דירות.

    אני רוצה לתת מספר לכל דירה.
    אני אתחיל בסריקה קומה אחר קומה מ-1 עד 3, ובכל קומה אני אסרוק את הדירות שורה שורה, בכל פעם אני אתן מספר עוקב מ-1 עד 27.
    (למעשה, מספרי הקומות הן 0 עד 2 ומספרי הדירות יהיו 0-26. למה? כי מתכנתים אמיתיים לא סופרים מ-1...)

    בוא נראה, מה האינדקס של כל דירה? הוא תלת מימדי [x,y,z]
    X – קומה
    Y – שורה
    Z - טור

    מספר דירה אינדקס
    0 [0,0,0]
    1 [0,0,1]
    2 [0,0,2]
    3 [0,1,0]
    4 [0,1,1]
    5 [0,1,2]

    כעת אני אשאל: היכן נמצאת דירה מספר 12 בקוביה? האינדקס הלינארי של הדירה הוא 12, אבל מה האינדקס התלת מימדי שלה?

    נכון, היא בקומה השניה (1) בשורה השניה (1) ובטור הראשון (0)
    כלומר באינדקס [1,1,0]
    (שים לב שוב שהיא הדירה ה-13 כי מתחילים מ-0...)

    הפונקציה unravel_index מבצעת את הפעולה שעשיתי למעלה: היא מקבלת שני ארגומנטים, א. האינדקס הלינארי, ב. מימדי התחום
    ומחזירה את האינדקס ה-N מימדי.

    בדוגמא שלנו, הקריאה

    unravel_index(12,(3,3,3))
    

    אמורה להחזיר את האינדקס התלת מימדי: (1,1,0)

    תודה רבה! הסבר מושקע, וברור. אחרי שהבנתי את יוסי זה חידד בצורה פשוטה עוד יותר. אינדקס לינארי לעומד אינדקס n-מימדי.

    תוכנה

  • np.unravel_index בjs
    D davidnead

    @yossiz אמר בnp.unravel_index בjs:

    אני לא מכיר כלל את ספריית numpy אבל מכיון שאני שמח ללמוד קצת דברים חדשים מפעם לפעם, פניתי לתיעוד וזה מה שהבנתי:

    ה-tile פה זה כנראה משתנה מסוג ndarray שזה אחד מהמבנים הבסיסיים של numpy. זה מערך של n מימדים כאשר tile.shape מתאר לך את המימדים.
    (במקרה שלך נראה שזה 2 מימדים, לפי התשובה של unravel_index)

    במבנה זו אפשר לאנדקס אותו בצורה "שטוחה" או בצורה n-מימדית. כלומר אם יש לך טבלה של 2X3 תוכל לדבר על האיבר האחרון לפי כתובות שטוחות כאיבר מספר 6 או בכתובות 2 מימדיות כאיבר 2,3. (בדוגמה התייחסתי לאינדקס הראשון כ-1, ב-numpy הראשון זה 0)

    הפעולה argmax נראה לי זה משהו מאוד פשוט, זה פשוט מביא לך את הכתובת "השטוחה" הכי גבוהה במערך. למשל מערך של 2X3 אז ה-argmax יהיה 5. שזה 2 כפול 3 מינוס 1 (כי הכתובות מתחילות מ-0).

    הפעולה unravel_index לוקחת כתובת "שטוחה" והופכת אותה לכתובת n-מימדית.

    כך הבנתי לבינתיים. אני יודע שלא עניתי ישירות על השאלה שלך.

    עכשיו נחכה ל- @OdedDvir להאיר את עינינו יותר undefined

    תודה! כבר החכמת אותי מאוד.
    ראשית לא תפסתי שargmax מחזיר בעצם את הkey (בערך, באמת זו כתובת כמו שאמרת) ולא את הvalue .
    שנית לא הבנתי שהunravel_index עושה פעולה הפוכה, ומהסיבה הפשוטה שלא הבנתי שהארגומנט המתקבל הוא כתובת בזיכרון ולא ערך.

    אגב, אם תעשה גוגל על הפונקציה תראה שיש לא מעט נסיונות להסביר אותה בצורה בהירה - אבל אף אחד לא עשה את זה קצר וברור כמוך! (טוב, גם האנגלית קצת הפריעה).

    אז בעיקרון יש לי את ההבנה עכשיו מה קורה ואני יכול להתחיל לשבור את הראש איך לממש בJS, אבל כמובן שאם יש משהו מוכן שיחסוך לי את זה - מצויין.
    אגב יש ספריות numpy לjs, לא מלאות כמובן. בכל שאר הפעולות שעשיתי על הtile הזה הסתדרתי בלעדיהם כי js נותן מספיק אפשרויות, אבל פה יתכן שהפתרון נעוץ בשימוש בספריה הזו. (את הפונקציות הספציפיות האלו היא לא מספקת).

    תוכנה

  • np.unravel_index בjs
    D davidnead

    @yossiz אמר בnp.unravel_index בjs:

    @davidnead אתה בעצם מתכוון לשאול מה הפונקציה עושה?

    קראתי קצת מה היא עושה, לא הבנתי לעומק, הבנתי שזה באמת קצת מסובך. האמת אני גם לא מתמקד בזה כרגע, אני מתמקד בתכל'ס. אם אדע איך לממש את זה בjs בלי להבין מה זה עושה - גם תנוח דעתי.
    אני בדרך כלל לא נוהג כך, אך המקרה הזה קצת חריג.

    לגבי הפונקציה המשנית (argmax) חשבתי שהבנתי מה היא עושה ומימשתי אותה בJS, אבל לפי ההתנהגות המוזרה שתיארתי נראה שיש שם משהו יותר עמוק. את זו כן אשמח להבין יותר.

    תוכנה

  • np.unravel_index בjs
    D davidnead

    @יוסף-בן-שמעון אמר בnp.unravel_index בjs:

    @davidnead אולי תסביר להדיוט כמוני מה אתה צריך, אני לא יודע פייתון

    אתה מבקש שאענה על השאלה של עצמי? 🙂
    השאלה שלי נובעת מפני שאיני מכיר מספיק פייתון כדי להבין את משמעות הקוד על בוריו. אם הייתי מבין - הייתי מוצא כבר דרך לממש את זה בJS.

    תוכנה

  • np.unravel_index בjs
    D davidnead

    מחפש מקבילה לunravel_index בJS, או לפחות דרך לבצע את הפעולה הזו.
    הפונקציה הזו קצת קשה להבנה עבורי, ולכן לא הצלחתי לממש אותה לבד.
    יש כל מיני כלים בJS שנותנים חלופות לnumpy ולכלים החישוביים העוצמתיים של פייתון, אל לפונקציה זו לא מצאתי.

    יתירה מזו, נתונה לי שורה כזו

    np.unravel_index(np.argmax(tile), tile.shape)
    

    שמחזירה לי תוצאה:

    (1979, 4584)
    

    אם אני מדפיס את np.argmax(tile) לבד, אני מקבל תוצאה: 15132060
    שזו תוצאה מוזרה, לא סבירה למערך הזה.
    ואם אני מדפיס את אותה שורה לעיל ושם בה את המספר הזה (הלא סביר) במקום הפונקציה שיוצרת אותו - אני מקבל שגיאה.

    אני מבין שהפונקציות הללו עובדות אחרת ממה שאני מבין, משהו עם זכרון המחשב, אולי גם איטרטורים. תכל'ס, אני צריך "לתרגם" את השורה הזו לjavascript, איך אני עושה את זה?

    תודה רבה

    תוכנה

  • להשתמש בקובץ אקסל עם נוסחאות כAPI
    D davidnead

    והיות שאני בזבזתי יומיים כדי להגיע לתוצאה הזו, וניסיתי להעזר בהרבה אנשים בכמה פורומים (כמובן שפה היה הראשון וגם האחרון שתכל'ס עזר) - אתן אותה כשולחן ערוך למי שיבוא אחרי:

    const winax = require("winax");
    
    const fileName = `...\\tst.xlsx`;
    
    const excel = new winax.Object("Excel.Application", { activate: true });
    const wbk = excel.Workbooks.Add(fileName);
    const input = wbk.Worksheets.Item(1).Range("A1");  
    const B1 = wbk.Worksheets.Item(1).Range("B1");  
    const output = wbk.Worksheets.Item(1).Range("C1"); 
    
    console.log(input.Value.valueOf()); //1
    console.log(B1.Value.valueOf()); //2
    console.log(output.Value.FormulaLocal); //=A1+B1
    console.log(output.Value.valueOf()); //3
    input.Value = 2;
    console.log(output.Value.valueOf()); //4
    

    נ.ב. הגליונות ממוספרים מ1, לא מ0.

    תכנות

  • להשתמש בקובץ אקסל עם נוסחאות כAPI
    D davidnead

    @davidnead אמר בלהשתמש בקובץ אקסל עם נוסחאות כAPI:

    @yossiz אמר בלהשתמש בקובץ אקסל עם נוסחאות כAPI:

    @davidnead טוב, אני לא מבטיח... חשבתי שהסתמכת רק על השם... בכל מקרה שוה לבדוק. אם לא תצליח בנוד, אפשר בפייתון, PHP, או כל שפה אחרת. אפשר למצוא מימושים לאוטומציה של OLE בהמון שפות. שלא לשכוח מ-#C ושפות של ווינדוס.

    אני די בור בכלים של מיקרוסופט. בגדול, הם מספקי כלי שמאפשר יצירת תוספות לאופיס שמכין לך לגמרי את כל התשתית ומשאיר לך רק לכתוב קצת JS, רק שהוא מיועד לתפעל ממשק מתוך האופיס. ככל שהבנתי מבחינה טכנית לא אמור להיות הבדל, רק שתכל'ס המימוש שלהם לא עושה את זה. תמיד אפשר לנסות לחפור בקוד שלהם...

    בקשר לספריה שהבאת - התיעוד שם לא מי יודע מה. ככל שאני מבין כעת - השגיאה בהתקנה היא כי אין תאימות לגרסאות החדשות של NODE:

    "engines": {
        "node": ">= 0.8.18 && < 0.9.0"
      },
    

    אם לא תהיה ברירה נלך על פייתון. (PHP זה קו אדום...)

    טוב, יישר כוח גדול. נמצא הפתרון:
    https://www.npmjs.com/package/winax
    ובבדיקה ראשונית הוא נותן תוצאה משביעת רצון, שכיוונים אחרים לא נתנו.
    אותו הפתרון, רק ספריה עדכנית יותר. כרגיל, יוסי צודק, רק לוקח זמן להבין את זה, ובמקרה הזה גם למצוא את המימוש הנכון.

    תכנות

  • להשתמש בקובץ אקסל עם נוסחאות כAPI
    D davidnead

    @yossiz אמר בלהשתמש בקובץ אקסל עם נוסחאות כAPI:

    @davidnead טוב, אני לא מבטיח... חשבתי שהסתמכת רק על השם... בכל מקרה שוה לבדוק. אם לא תצליח בנוד, אפשר בפייתון, PHP, או כל שפה אחרת. אפשר למצוא מימושים לאוטומציה של OLE בהמון שפות. שלא לשכוח מ-#C ושפות של ווינדוס.

    אני די בור בכלים של מיקרוסופט. בגדול, הם מספקי כלי שמאפשר יצירת תוספות לאופיס שמכין לך לגמרי את כל התשתית ומשאיר לך רק לכתוב קצת JS, רק שהוא מיועד לתפעל ממשק מתוך האופיס. ככל שהבנתי מבחינה טכנית לא אמור להיות הבדל, רק שתכל'ס המימוש שלהם לא עושה את זה. תמיד אפשר לנסות לחפור בקוד שלהם...

    בקשר לספריה שהבאת - התיעוד שם לא מי יודע מה. ככל שאני מבין כעת - השגיאה בהתקנה היא כי אין תאימות לגרסאות החדשות של NODE:

    "engines": {
        "node": ">= 0.8.18 && < 0.9.0"
      },
    

    אם לא תהיה ברירה נלך על פייתון. (PHP זה קו אדום...)

    תכנות

  • להשתמש בקובץ אקסל עם נוסחאות כAPI
    D davidnead

    @yossiz אמר בלהשתמש בקובץ אקסל עם נוסחאות כAPI:

    @davidnead לא!
    השם win32 לא מסמל מספר הסיביות... זה שם היסטורית ל-API של ווינדוס.
    גם 64 סיביות נתמך.

    אה, לא אמרתי את זה רק בגלל השם. אלא שבגלל שבהתקנת הספריה קיבלתי שגיאה שהיא לא מתאימה לפלטפורמה או משהו כזה. אבל אם אתה אומר שזה כן אמור לתמוך אז אנסה לבדוק יותר לעומק.

    תכנות

  • להשתמש בקובץ אקסל עם נוסחאות כAPI
    D davidnead

    @www אמר בלהשתמש בקובץ אקסל עם נוסחאות כAPI:

    @davidnead אמר בלהשתמש בקובץ אקסל עם נוסחאות כAPI:

    שיטס - זה גדול עליו.

    מה הכוונה?

    @davidnead אמר בלהשתמש בקובץ אקסל עם נוסחאות כAPI:

    עלה בדעתי רעיון, גרוע אמנם אבל אמור להשיג את התוצאה. במקרה שלי זה יכול להספיק. להשאיר את הקובץ אקסל פתוח ולהפעיל מהVBA שרת שיקשיב לקריאות מבחוץ ויתן תשובות. ראיתי קצת ברשת שזה אפשרי, רק שבשביל רמת הידע שלי בVBA זה נראה אתגר רציני.

    אם כבר, אז בשיטס עם סקריפט, ייתכן שזה יכול לרוץ בענן.

    מדוב בקובץ אקסל קיים, מאוד מאוד מורכב. עושה עבודה שלא מביישת שום ספריה בNPM (למעשה יש שם כמה ספריות שעושות עבודה דומה, חלקית לפחות). הוא משתמש בתאים בתור משתנים ובתאים שמכילים נוסחאות מתור פונקציות, קובץ ענק ומושקע מאוד. הקובץ הזה אין עיקרו נתונים אלא הוא סוג של תכנה, מקבל קלט ומחזיר קלט. הוא גם כבד מאוד (130MB). שיטס לא מצליח לפתוח אותו, וזה לא מפתיע. גם ספריות שונות שניסיתי לסוגים מסוימים של פתרונות לא הצליחו להתמודד עם הקובץ הספציפי הזה.
    לכו נראה לי הפתרון הכי הגיוני (בהתאם למציאות הלא הגיונית...) זה להפעיל באיזו צורה את האקסל עצמו, הכיוון של @yossiz נשמע טוב אם יש לו מימושים.

    תכנות

  • להשתמש בקובץ אקסל עם נוסחאות כAPI
    D davidnead

    @yossiz ככל שהבנתי הספריה ההיא לא תומכת ב64 סיביות.

    תכנות

  • להשתמש בקובץ אקסל עם נוסחאות כAPI
    D davidnead

    עלה בדעתי רעיון, גרוע אמנם אבל אמור להשיג את התוצאה. במקרה שלי זה יכול להספיק. להשאיר את הקובץ אקסל פתוח ולהפעיל מהVBA שרת שיקשיב לקריאות מבחוץ ויתן תשובות. ראיתי קצת ברשת שזה אפשרי, רק שבשביל רמת הידע שלי בVBA זה נראה אתגר רציני.

    תכנות

  • להשתמש בקובץ אקסל עם נוסחאות כAPI
    D davidnead

    @אפר-שריפה אמר בלהשתמש בקובץ אקסל עם נוסחאות כAPI:

    @davidnead אולי תשתמש באקסל אונליין או שיטס בשביל זה

    שיטס - זה גדול עליו. אקסל אונליין, לא מכיר. ואיך זה יכול לעזור? יש להם API?

    תכנות

  • להשתמש בקובץ אקסל עם נוסחאות כAPI
    D davidnead

    האם זה יכול לעזור לי?
    אם אני מבין נכון מדובר בסוג של תוסף שמאפשר לעבוד עם JS מתוך האקסל כמו סוג של תחליף לVBA ולא להתממשק מבחוץ.

    תכנות

  • להשתמש בקובץ אקסל עם נוסחאות כAPI
    D davidnead

    @yossiz אמר בלהשתמש בקובץ אקסל עם נוסחאות כAPI:

    @davidnead אפשר להריץ אקסל ברקע ולשלוט עליו באמצעות כל שפה שתומכת באוטומציה דרך OLE Automation.
    אולי תוכל לעשות את זה מ-JS דרך ספרייה זו: https://www.npmjs.com/package/win32ole
    (הדוגמה ב-README הוא על אקסל)

    נשמע כיוון טוב, אבל נראה שזה מתאים רק לwin32

    תכנות

  • להשתמש בקובץ אקסל עם נוסחאות כAPI
    D davidnead

    @www תודה רבה!
    נראה שאכן יש ספריה ייעודית משלימה בדיוק לזה: XLSX_CALC. אלא שהקובץ שלי כנראה מורכב מידי, והספריה הנ"ל כנראה לא תומכת בחלק מהנוסחאות שם.
    אני מנס הכעת לבצע קומבינות מסוג של לשנות את הקובץ ואז להריץ אותו משורת הפקודה כדי שהוא יפתח ויחושב מחדש על ידי האקסל.
    אשמח לרעיונות נוספים.

    תכנות

  • להשתמש בקובץ אקסל עם נוסחאות כAPI
    D davidnead

    יש לי קובץ אקסל, מורכב מאוד, עם הרבה נוסחאות. בסופו של דבר זה קלט-פלט כמו כל תכנה. יש אפשרות להזין נתונים בתאים מסויימים, ולאחר שרשרת ארוכה של נוסחאות מתקבל בסוף פלט בתא אחר.
    אני רוצה לגשת לזה באמצעות JS, ולהשתמש בזה דינמית ולא סטטית. כלומר שאוכל ממש להזין נתון בתא שאמור להיות קלט, ואז לקרוא את התוצאה שחושבה כעת בתא הפלט.

    מצאתי ספריה נחמדה בשם sheetjs שעושה עבודה מאוד יפה עם אקסל, אפשר ממש לגשת לכל סוגי התוכן של הקובץ. אבל איני מליח לשנות תוכן של תא באופן שזה ישפיע דינמית. כלומר תוכן האובייקט שמכיל את התא משתנה, אבל הנוסחה לא מחושבת מחדש ולכן תוכן תא הפלט לא משתנה.

    יתכן שאי אפשר לעשות את זה, אבל יתכן שפשוט אני לא מספיק יודע להשתמש בספריה, או אולי יש ספריה אחרת שכן עושה את זה.

    תודה רבה

    תכנות

  • הצילו - פייתון - ניהול חבילות וvenv
    D davidnead

    @ארכיטקט אמר בהצילו - פייתון - ניהול חבילות וvenv:

    אתה תוכל לנווט די בקלות פחות או יותר לחלקים שמעניינים אותך

    תודה לך, זו תגובה מעודדת. אבל ההנחה הנ"ל לא נכונה. אני אסתר איכשהו עם אנגלית אם יש לי מיקוד מראש על איזה חומר אני צריך להשתלט. אבל לשוטט ולחפש קורס+לנווט לחלקים רלוונטיים, זה משהו שאני עשוי לבזבז עליו שעות רבות לריק.
    אם לא ימצא מענה ממוקד יותר כנראה זה מה שיקרה בסוף.

    כ"כ, איך אשלם על קורס מראש בלי שאני יודע שיש שם מה שמעניין אותי?
    יש דווקא בעברית קורסים לא רעים על פייתון, חלקם חינמיים, אבל הם לא מכסים את הנושא הספציפי הזה אלא בצורה בסיסית.

    תכנות

  • הצילו - פייתון - ניהול חבילות וvenv
    D davidnead

    רבותי, באו מים עד נפש.

    הגעתי מהעולם הורוד והיפה של js-npm, כל מה שעליך להכיר זה פקודה פשוטה שקוראים לה npm i ושאר החיים יפים.

    כשקיבלתי את הפרוייקט הראשון בפייתון שלא בניתי בעצמי לקח לי כמה ימים עד שהתמודדתי עם כל הבעיות והצלחתי להריצו תקין. אבל כשחשבתי שבאתי אל המנוחה והנחלה, התברר שממש לא. ברגע שרציתי להעביר את הפרוייקט לעוד מחשב - סיוט. הvenv לא עזר כלל ואף סיבך לי את החיים.

    אני לא רוצה להלאות אתכם באוסף בעיות נקודתיות (החל מחבילות שנופלות שוב ושוב בלי הצדקה, כלה בvenv שלא מגיב לpath הנכון בכל מיני מצבים לא צפויים, ועוד), אני פשוט מחפש היכן אוכל ללמוד בצורה קצת יותר יסודית על סביבות וירטואליות וניהול חבילות בפייתון, ודחוף. וכדאי מאוד מאוד בעברית - אפילו בתשלום.

    נ.ב. אני מבין שpip זו האפשרות הנפוצה אבל הפחות מקצועית, ומקצוענים משתמשים באנקונדה וכאלו דברים. אבל pip אמור לעבוד ובתור אחד שלא חורש פייתון אני חושב שאין סיבה שאכנס לדברים פחות קלאסיים. צריך להכיר קודם את הבסיס היטב ולוודא שהוא פועל.

    נ.ב.ב. דוקר זה לא הנושא פה, על תערבו אותו בבקשה

    תכנות
  • 1 / 1
  • התחברות

  • אין לך חשבון עדיין? הרשמה

  • התחברו או הירשמו כדי לחפש.
  • פוסט ראשון
    פוסט אחרון
0
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום