반응형

전체 글 92

파이썬(리스트 등)의 copy()와 Numpy의 copy()

결론 list1.copy()는 얕은 복사이고,numpy에서 ndarray.copy()는 깊은 복사이다.   질문numpy에서의 .copy()는 deepcopy인 거고, numpy가 아닌 일반적인 상황에서 list를 .copy()하면 얕은복사인 거야? ChatGPT의 말:ChatGPT네, 맞습니다! 일반적인 리스트에서의 .copy()와 NumPy 배열에서의 .copy()는 서로 다른 동작을 합니다. 아래에서 각각의 경우를 자세히 설명하겠습니다.1. 일반적인 리스트의 .copy()얕은 복사 (Shallow Copy):Python의 기본 리스트에서 .copy() 메서드를 사용하면, 원본 리스트의 얕은 복사가 수행됩니다.즉, 새로운 리스트가 생성되지만, 그 리스트는 원본 리스트의 요소에 대한 참조를 유지합니다...

[Pandas] 숫자 슬라이싱과 문자(라벨) 슬라이싱의 차이

s[:5]와 s[:'다']에서 범위의 동작이 다르게 보이는 이유는, 숫자 슬라이싱과 라벨(문자) 슬라이싱이 pandas에서 다르게 처리되기 때문입니다.숫자 인덱스 슬라이싱 (s[:5]):pandas.Series에서 숫자로 슬라이싱을 할 때는 파이썬 기본 슬라이싱 규칙을 따릅니다. 즉, 끝 인덱스는 포함되지 않음.예를 들어, s[:5]는 0부터 4까지의 항목을 반환합니다.이 방식은 파이썬의 리스트나 배열에서 흔히 사용하는 슬라이싱 방식과 동일합니다. s = pd.Series(list('가나다라마'))s[:5]# 결과:# 0 가# 1 나# 2 다# 3 라# 4 마# dtype: object라벨(문자) 인덱스 슬라이싱 (s[:'다']):pandas.Series에서 라벨(문자)로 슬라..

[Pandas] isna()와 isnull()의 차이

isna()와 isnull()은 pandas에서 결측값을 확인할 때 사용하는 함수로, 동일한 기능을 수행합니다. 사실상 차이가 없으며, 두 함수는 서로 대체 가능합니다.기능:두 함수 모두 NaN(Not a Number)이나 None과 같은 결측값을 True로, 결측값이 아닌 경우 False로 표시합니다.이 함수들은 데이터프레임, 시리즈, 혹은 다른 pandas 객체에서 결측값을 찾을 때 사용됩니다.차이점:isna(): pandas에서 더 직관적인 이름으로 제공하는 함수이며, "NA"라는 표현을 강조하기 위해 사용됩니다. 이는 "결측값(N/A)"을 나타내는 용어를 사용하고 있습니다.isnull(): 더 오래된 함수로, pandas의 초기 버전부터 사용되어 왔으며, 여전히 지원되고 있습니다. "null"이라..

[Pandas] and와 & 차이

print(sample2[(sample2 >= 130) & (sample2 & 연산자를 사용하는 이유는, pandas의 시리즈 또는 데이터프레임의 요소 간 비교를 수행하기 때문입니다. 이와 관련된 주요 사항을 설명하겠습니다.& 연산자:&는 비트 연산자로, pandas에서 원소별(요소별) 논리 연산을 수행할 때 사용됩니다. 즉, sample2 >= 130과 sample2 예를 들어, sample2의 각 값에 대해 130 이상이고 170 이하인지 판단하여 필터링할 수 있습니다.and 연산자:and는 파이썬의 논리 연산자로, 단일 객체 간의 논리 연산에 사용됩니다. 그러나 pandas에서는 and를 사용하면 배열(시리즈 또는 데이터프레임) 간의 연산을 수행하지 못하고, 배열 자체를 비교하려 시도하므로 오류가 ..

[Pandas] 대괄호([])를 2번 사용하는 이유(단일 열/2개 이상의 열)

print(sample[['나', '라']])에서 대괄호를 두 번 사용하는 이유는 다음과 같습니다.sample['나']:sample['나']는 단일 열을 선택하는 방식입니다. 이렇게 하면 pandas.Series 객체가 반환됩니다. 즉, 하나의 열만 가져오는 경우입니다.sample[['나', '라']]:sample[['나', '라']]는 여러 열을 선택하는 방식입니다. 대괄호 안에 리스트 ['나', '라']를 넣어, 두 개 이상의 열을 선택하는 것입니다.이렇게 하면 pandas.DataFrame 객체가 반환됩니다. 즉, 여러 열을 가져오므로 DataFrame 형태를 유지합니다.따라서, 대괄호가 한 번 사용되면 단일 열이 선택되어 Series가 반환되고, 두 번 사용되면 열 목록이 선택되어 DataFram..

[Pandas] Series(list('문자열'))과 Series(['문자열'])의 차이

두 코드에서 생성된 pandas.Series의 결과가 다른 이유는 리스트의 구조 차이에 있습니다.첫 번째 코드: s = pd.Series(list('가나다라마'))여기서 list('가나다라마')는 문자열 '가나다라마'를 문자 하나씩 나누어 리스트로 변환합니다.결과적으로, 리스트는 ['가', '나', '다', '라', '마']가 되어 각 문자가 Series의 요소가 됩니다.따라서 출력 결과는 다음과 같습니다:python코드 복사0 가 1 나 2 다 3 라 4 마 dtype: object두 번째 코드: s = pd.Series(['가나다라마'])여기서는 문자열 '가나다라마' 자체가 리스트의 하나의 요소로 들어갑니다.리스트가 ['가나다라마']이므로, Series에는 하나의 요소가 포함되며, 그 요소는 문자열 ..

[파이썬] 2차원 누적합 알고리즘(백준 11660 합 구하기 5)

백준 11660 구간 합 구하기 5 시간초과 발생 코드import sysn, m = map(int, sys.stdin.readline().split())nums_list = []for _ in range(n): nums_list.append(list(map(int, sys.stdin.readline().split())))for i in range(m): hap = list(map(int, sys.stdin.readline().split())) total = 0 for p in range(hap[0] - 1, hap[2]): for q in range(hap[1] - 1, hap[3]): total += nums_list[p][q] ..

C/C++의 함수 vs 파이썬의 함수 차이점

C/C++(call by value VS call by reference)Call by value값을 전달하는 방법. 함수 내 매개변수의 값을 변경하지만, main 함수에서 전달했던 원본 값을 변경하지는 않는다.void modify(int x) { x += 1; printf("%d\n", x); //11}int main() { int a = 10; modify(a); printf("%d\n", a); //10} Call by reference주소를 전달하는 방법. main 함수에서의 원본 변수 주소를 전달함으로써 함수 내에서 원본 변수에 접근이 가능해진다.void modify(int* x) { *x += 1; printf("%d\n", *x); //11}int mai..

프로그래밍 2024.07.05

[파이썬(Python)] 백준 11866 요세푸스 문제 0

https://www.acmicpc.net/problem/11866백준 11866번 요세푸스 문제 0 | 실버 5 코드import sysn, k = map(int, sys.stdin.readline().split())nums = [i for i in range(1, n + 1)]josephus = [0] * nkill = kdel_num = k - 1josephus[0] = nums[del_num]nums.remove(kill)for m in range(1, n): nums_length = len(nums) del_num += (k - 1) del_num %= nums_length josephus[m] = nums[del_num] nums.remove(nums[del_num])..

반응형