프로그래밍/Python 17

0, 1 로 이루어진 배열, 텐서 만들기(pytorch,numpy - ones_like, zeros_like)

0, 1로 채워진 텐서를 만드는 방법, 기존 텐서의 크기와 데이터 타입을 그대로 유지하면서 생성 1.ones_like # 예제 배열 생성 original_array = np.array([[1, 2], [3, 4]]) # np.ones_like를 사용하여 1로 채워진 배열 생성 ones_array = np.ones_like(original_array) print("Original array:") print(original_array) print("\nArray of ones:") print(ones_array) # 예제 텐서 생성 original_tensor = torch.tensor([[1, 2], [3, 4]]) # torch.ones_like를 사용하여 1로 채워진 텐서 생성 ones_tensor =..

텐서, 배열 연결하기(numpy, pytorch - concat(concatenate, stack)

1.concat(=concatenate) 주어진 차원을 따라 텐서들을 연결하는데 사용 딥 러닝에서는 주로 모델의 입력 또는 중간 연산에서 두 개의 텐서를 연결하는 경우가 많음. 두 텐서를 연결해서 입력으로 사용하는 것은 두 가지의 정보를 모두 사용한다는 의미. dim = 0: 첫번째 차원을 늘림 dim = 1: 두전째 차원을 늘림 # 예제 배열 생성 array1 = np.array([[1, 2], [3, 4]]) array2 = np.array([[5, 6]]) np.concatenate을 사용하여 두 배열을 첫 번째 차원(행)을 따라 이어붙이기 result_concatenate = np.concatenate((array1, array2), axis=0) print("\nConcatenated array..

텐서 타입 변경하기(numpy - astype(float), pytorch - float())

# NumPy 배열 생성 numpy_array = np.array([1, 2, 3]) # NumPy 배열을 다른 데이터 타입으로 변환 float_array = numpy_array.astype(float) int_array = numpy_array.astype(int) print("Original NumPy array:", numpy_array) print("Float array:", float_array) print("Integer array:", int_array) # PyTorch 텐서 생성 torch_tensor = torch.tensor([1, 2, 3]) # PyTorch 텐서를 다른 데이터 타입으로 변환 float_tensor = torch_tensor.float() int_tensor = ..

텐서 차원 변경하기(pytorch - squeeze, unsqueeze/ numpy - squeeze, expand_dims)

텐서의 원소를 유지한채 모양과 차원크기 변환 차원이 1인경우 해당 차원을 제거, 특정 위치에 1인차원을 추가 dim은 제거하거나 추가할 차원의 위치 1.numpy - squeeze, expand_dims # 1차원 배열 생성 array = np.array([[1], [2], [3]]) # 차원을 추가하여 2차원 배열로 만들기 expanded_array = np.expand_dims(array, axis=0) # 차원을 제거하여 1차원 배열로 만들기 squeezed_array = np.squeeze(expanded_array, axis=0) print("Original array:") print(array) print(array.shape) print("\nAfter expand_dims:") print(..

배열구조 바꾸기(numpy - reshape, pytorch - view/reshape)

원소의 수를 유지하면서 배열의 모양을 바꾸는 방법 1.[numpy - reshape] array.reshape(변환 shape), np.reshape(array, 변환 shape) 재배정이 불가능한 경우 ValueError arr = np.arange(1, 10) # [1, 2, 3, 4, 5, 6, 7, 8, 9] reshaped_arr = np.reshape(arr, (3, 3)) print("Original array:") print(arr) print("\nReshaped array:") print(reshaped_arr) Original array: [1 2 3 4 5 6 7 8 9] Reshaped array: [[1 2 3] [4 5 6] [7 8 9]] 2.[pytorch - view, r..

텐서, 행렬의 곱셈 - numpy(*, dot, @), pytorch(mul, matmul, @) 비교

1.[Numpy]의 곱연산자 '*' '*' 연산자는 원소별(element-wise) 곱셈 스칼라 곱 별연산은 같은 shape 여야만 계산 다른 경우는 (1, n)꼴 일때 브로드캐스팅 적용 브로드캐스팅 지원 'dot' 'dot'함수는 두 행렬간의 내적(dot product) 앞의 행렬의 마지막 축과 뒤의 행렬의 두 번째 축간의 내적 수행 '@' 행렬 곱셈 행렬이라는 2차원 공간에서는 내적 'dot'과 같은 역할 3차원부터는 텐서곱(외적)이라 다른 결과 마지막 축에 대해서만 행렬 곱셈 pytorch의 'matmul', '@'와 동일한 행렬곱셈 np의 'matmul'과도 동일 2.[pytorch] 의 곱연산자 'mul' 원소별(element-wise) 곱셈 브로드캐스팅 지원 'matmul' 행렬곱셈 '@'와 ..

tensor(텐서) 개념 및 numpy, pytorch 비교하기

1.개념 1-1.텐서 차원별 개념 스칼라(Scalar), 벡터(Vector), 행렬(Matrix), 텐서(Tensor)는 선형 대수학(Linear Algebra)에서 중요한 개념들입니다. 각각은 다양한 수학적 객체를 나타내며, 데이터 및 연산을 표현하는 데에 활용된다. 스칼라(Scalar): 크기만 가지고 방향이 없는 양, 실수나 정수 0차원 벡터(Vector): 벡터는 크기와 방향을 가지는 양 2차원 벡터는 평면에서의 위치, 3차원 벡터는 공간에서의 위치를 나타냄 벡터는 순서가 있는 숫자의 나열로 표현되며, 각 요소는 벡터의 한 차원을 나타냄 1차원 행렬(matrix): 숫자들을 2차원 배열로 나타낸 것으로 행과 열로 이루어짐 M x N 행렬은 M개의 행과 N개의 열로 이루어짐 2차원 텐서(tensor..

[python] 문자열에서 특정 문자열 찾기(find, index, rfind, rindex)

Python에서 문자열에서 특정 부분 문자열을 찾거나 위치를 찾는데 사용되는 메소드에는 find, index, rfind, rindex가 있다. find(substring, start, end): 부분 문자열 substring을 찾고, 처음 발견된 위치(index)를 반환 찾지 못할 경우 -1을 반환 start와 end 매개변수를 사용하여 검색 범위를 제한 sentence = "Hello, world!" index = sentence.find("world") print(index) # 출력: 7 index(substring, start, end): find와 비슷하지만, 부분 문자열이 없을 경우 ValueError를 발생 sentence = "Hello, world!" index = sentence.in..

[python] List 두 인자 위치 변경하기(스와프, swap)

Python에서 리스트(List)에서 두 요소의 위치를 바꾸려면 다음과 같이 할 수 있다. 간단한 방법으로 두 변수의 값을 서로 교환하면 된다. 예를 들어, 리스트 my_list에서 인덱스 i와 인덱스 j의 값을 바꾸려면 다음과 같이 할 수 있다. my_list = [1, 2, 3, 4, 5] # 인덱스 1과 인덱스 3의 값 바꾸기 i, j = 1, 3 my_list[i], my_list[j] = my_list[j], my_list[i] print(my_list) # [1, 4, 3, 2, 5] python의 swap 기능을 사용하면 두 변수의 값을 간단하게 교환할 수 있고, 새로운 변수를 만들지 않아도 되는 장점이 있다. 그리고 두개 이상, 세개, 네개 인자도 위치 변경이 가능하다.

[python] lambda 함수로 한줄 함수 만들기

개념 및 구문 Lambda 함수는 파이썬에서 익명 함수(anonymous function)를 생성하는 방법 중 하나입니다. Lambda 함수는 간단한 함수를 정의할 때 사용되며, 일반적으로 한 줄로 작성됩니다. Lambda 함수는 함수 정의를 간결하게 표현할 때 유용합니다. lambda arguments: expression `arguments`: 함수에 전달할 매개변수(인자)를 나타냅니다. `expression`: 인자를 받아 처리하고 결과를 반환하는 표현식을 나타냅니다. Lambda 함수는 주로 함수의 인자로 전달되거나, 간단한 함수를 인라인으로 정의할 때 사용됩니다. Lambda 함수는 간단한 작업을 수행할 때 유용하지만, 복잡한 작업을 처리하기 위해서는 일반적인 함수를 정의하는 것이 더 적합할 수..