파이썬에서 숫자는 chained comparison이 되는데 numpy.ndarray는 안된다. 게으른 파이썬 녹화하다가 즉흥적으로 궁금해져서 해봤는데 막혀서 당황했다. 의미적으로는 되어야 할 것 같은데 왜 막아놨지? 궁금해졌다. 챗gpt한테 물어봤으나 뻘소리만 해대길래 검색해봤다. 검색어는 "ndarray chained comparison". 어떤 stackoverflow의 답변을 요약해보면, • PEP 535에서 제안되었으나 연기되어 있는 상태임• 파이썬에서 아래 코드는2 • 아래와 같이 해석됨2 • 논리 연산자 and는 피연산자에 bool을 입힘• 그런데 ndarray는 요소가 2개 이상이면 bool을 입히지 못함 (왜 못하게 해놨지?) • 여튼 해결책으로 bitwise or인 &를 쓰..
예전부터 궁금했다. 행렬을 수평으로 합치고 싶으면 아래처럼 쓰면 되고, >> A = rand(3, 2);>> B = rand(3, 3);>> [A, B]ans = 0.1450 0.3510 0.0760 0.1839 0.0497 0.8530 0.5132 0.2399 0.2400 0.9027 0.6221 0.4018 0.1233 0.4173 0.9448>> 수직으로 합치고 싶으면 아래처럼 쓰면 되는데, >> A = rand(3, 2);>> C = rand(4, 2);>> [A; C]ans = 0.4909 0.9001 0.4893 0.3692 0.3377 0.1112 0.7803 0.096..
이 글은 정규식 삽질의 기록이며, 나중에 내가 같은 패턴을 쓸 일이 있을 때 찾아보기 위함이다. 매번 느끼지만, 정규식은 문제마다 솔루션이 다르게 존재하는 느낌이다(...). 100개의 문제가 있으면 솔루션도 100개인 느낌이랄까. 요약• regexp는 모든 occurrence를 찾는다. 첫 번째 occurrence만 찾으려면 'once' 옵션을 사용한다. idx = regexp(str, pattern, 'once');• regexp는 기본적으로 인덱스를 반환한다. 문자열을 받고 싶으면 'tokens' 옵션을 사용한다. 이때 2, 3번째 반환값은 startIdx와 endIdx이다. 매칭이 N개이면 startIndx와 endIdx의 길이도 N이다.[matches, startIdx, endIdx] = reg..
수치해석 중간고사에 grading 함수 작성 문제를 출제했다. 그리고 assert를 이용해서 채점 코드를 만들었다. 그리고 문제가 발생했다.학생은 분명히 잘 풀었는데 실패라고 뜬다. 리스트를 수정하는 문제였는데, 나의 의도는 새로운 리스트를 만드는 것이었으나, 입력 리스트를 그대로 수정해서 반환하도록 제출한 학생이 있었다. 리스트 복사본이 문제인가 싶어서 온갖 수정을 가해봤으나 여전히 해결되지 않는다. 값을 하나하나 비교해보아도 분명히 문제가 없는데 자꾸 실패라고 뜬다. 한 시간을 삽질한 끝에 문제를 찾았다. numpy가 import 되지 않았었다.(...) 에러는 NameError였는데 Exception을 대충 썼더니 엉뚱한 결과를 보여주던 것이었다. 예외처리를 성실하게 하지 않으면 독이 될 수 있..
오피스 365에서 오피스 2019로 바꾼 후 워드 수식 입력기에 버그가 생겨서 불편해졌다. 이 기회에 레이텍으로 갈아타보기로 했다. 감사하게도 몇몇 분들께서 좋은 튜토리얼을 찾아주셔서 초속성으로 배우고 바로 실전 돌입했다. 무엇이든 새로 배우는 가장 좋은 방법은 기존의 작업물을 새로 배운 스킬로 재작업하는 것이다. 지난 번에 작성했던 문서를 레이텍으로 똑같이 작성해보기로 했다. 그리고 그 결과물은 여기에... 결론: 워드로 돌아갈까... 아래는 첫 레이텍 문서를 작성하면서 겪은 고난과 역경과 삽질의 기록...이라기보단 그냥 몇 가지 팁이다. 대부분은아 이거 어떻게 하지? 라는 궁금증에서 출발해 무수한 검색을 통해 알게 된 것들이다. 1. overleaf에서- pdf pane을 더블클릭 하면 해당 부분의..
2024년 4번째 책: 수학을 읽어드립니다, 남호성 지음, 한국경제신문, 2021. 한줄요약: 영문학도는 어떻게 인공지능 연구자가 되었는가 (aka 영어인) 아주 간혹 그런 책을 만난다. 처음 읽을 때에는 그냥 그저 그랬는데, 이상하게 한 번 더 읽어보고 싶어지는 책. AngeloYeo님 채널에서 우연히 추천 영상을 보고 흥미가 생겨서 빌려봤다.(https://www.youtube.com/watch?v=V1I8HfBRHlI) 솔직히 초중반은 지극히 평범한 무용담 시리즈다. 이거다 싶으면 무모하게 도전하고, 아니다 싶으면 뒤돌아보지 않고 그만두고, 실패에도 좌절하지 않고 위기를 기회로 만들어 이겨내는, 어르신들이 좋아할 만한, 헝그리 정신이 투철한, 열정 가득한, 진짜 인생 열심히 사는 분의 성공기. 꼰대..
'미적분의 힘'이라는 책을 읽고 있는데, $$ 1 + \frac{1}{4} + \frac{1}{16} + \frac{1}{64} + ... = \frac{4}{3}$$ 를 귀류법으로 증명할 수 있다고 나온다. 그런데 할 수 있다고만 나오지 어떻게 하는지는 안 나온다. 그래서 해봤다. 어쩌다보니 증명을 해버렸다. 위 식이 $4/3$가 아니라면 $4/3$보다 크거나 작다. 1. 위 식이 $4/3$보다 작다면? 어떤 양수 $\epsilon$이 존재해서 $$ 1 + \frac{1}{4} + \frac{1}{16} + \frac{1}{64} + ... = \frac{4}{3} - \epsilon$$ 을 만족한다. 양변에서 1을 빼고 4를 곱하면 $$ 1 + \frac{1}{4} + \frac{1}{16} + \f..
현재 폴더의 하위 폴더뿐만 아니라, 그 아래의 폴더, 그 아래아래의 폴더까지 모두 찾고 싶었다. 한참 고민했다. 재귀적으로 찾아야 하나? 재귀는 코드 짜기 귀찮으니까 어떻게든 while로 되지 않을까? ... ... 역시 검색을 잘 해야 한다. https://www.mathworks.com/matlabcentral/answers/448850-list-of-all-subfolders-and-theire-subfolders-etc 현재 폴더 아래의 모든 폴더와 파일을 찾고 싶다면 아래 한 줄이면 된다. d = dir('./**'); 하지만 이 중에는 '.'와 '..'가 폴더 개수만큼 들어있다. 아래 줄을 추가하여 이들을 제거할 수 있다. d = d(~ismember({d.name}, {'.', '..'}))..