# 4.1.1.     Basic Operations

NumPy  배열을 생성하는 가장 기본적인 함수는 array() 입니다. 첫 번째 인자로 리스트를 받는데 이것으로 array객체를 생성합니다.

```
>>> np.array( [1, 2, 3] ) #1차 배열 (벡터) 생성
>>> np.array( [ [1, 2, 3], [4, 5, 6] ) # 2x3 크기의 2차원 배열 (행렬) 생성
```

&#x20;파이썬의 내장 함수인 range()와 유사하게 배열 객체를 반환해주는 arange() 함수가 있습니다.

&#x20;np.arange(10) 라고 한다면 1차원 배얼 \[0,1,2, ... ,9]를 생성하는 것입니다.

&#x20;그리고 시작점과 끝점을 균일 간격으로 나눈 점들을 생성해주는 linspace()함수도 있습니다.

```
c = np.linspace(0, 1, 6)   # start, end, num-points 
d = np.linspace(0, 1, 5, endpoint=False)
```

```
c= [0.  0.2 0.4 0.6 0.8 1. ]
d= [0.  0.2 0.4 0.6 0.8]
```

위의 코드에서 c는 시작점이 0 이고 끝점이 1이므로 이를 6 점으로 표시하려면  0.2 간격씩 띄우면 됩니다. d는 시작점이 0 이고 끝점이 1인데 5등분으로 나누는데 끝점을 포함하지 않으니 0.2 간격으로 나뉘어 집니다.

배열의 산술 연산자는 새 배열이 만들어지고 그 결과로 채워집니다. 다음의 코드로 NumPy 연산을 설명해 보겠습니다

```python
import numpy as np

a = np.array( [20,30,40,50] )
b = np.arange( 4 )
print("배열 a", a)
print("arrange로 생성한 b",b)
c = a-b
print("c=a-b 의 결과값",c)
print("b**2 의 결과값",b**2)
print("a의 sine값 * 10 의 결과값",10*np.sin(a))
print("a가 35보다 작은지에 대한 비교 결과",a<35)

AA = np.array( [[1,1],
                [0,1]] )
BB = np.array( [[2,0],
                 [3,4]] )
print("AA * BB 의 결과값\n",AA * BB)
print("AA @ BB 의 결과값\n",AA @ BB)
print("AA.dot(BB) 의 결과값\n",AA.dot(BB))
```

위 코드의 실행 결과는 다음과 같습니다.

```
배열 a [20 30 40 50]
arrange로 생성한 b [0 1 2 3]
c=a-b 의 결과값 [20 29 38 47]
b**2 의 결과값 [0 1 4 9]
a의 sine값 * 10 의 결과값 [ 9.12945251 -9.88031624  7.4511316  -2.62374854]
a가 35보다 작은지에 대한 비교 결과 [ True  True False False]
AA * BB 의 결과값
 [[2 0]
 [0 4]]
AA @ BB 의 결과값
 [[5 4]
 [3 4]]
AA.dot(BB) 의 결과값
 [[5 4]
 [3 4]]
```

a = np.array( \[20,30,40,50] ) 1차원 배열로 NumPy 배열을 생성하여 그 이름을 a로 칭합니다.

numpy.arange(\[start,] stop\[, step,], dtype=None) 함수는 start부터 stop 미만까지 step 간격으로 데이터 생성한 후 배열을 만드는 함수입니다. 따라서 b=np.arrange(4) 는 자동으로 \[0 1 2 3] 라는 1차원 배열로 데이터가 존재하는 NumPy 배열을 생성합니다.

c=a-b , b\*\*2 등 연산의 결과는 각각의 배열 값에 해당 연산을 한 것으로 계산하여 출력됩니다. \*는 행렬곱이 아니라 요소별 곱셈입니다.

벡터의 내적이나 매트릭스의 벡터 곱이나, 메트릭스 곱을 계산하기 위해 @ 혹은 dot 함수를 사용합니다. matrix multiplication에 대해서는 별도로 학습하기 바랍니다.

AA.dot(BB) 메트릭스 곱은 AA\[0,0]\*BB\[0,0]+AA\[0,1]\*BB\[1,0]=5, AA\[0,0]\*BB\[0,1]+AA\[0,1]\*BB\[1,1]=4, AA\[1,0]\*BB\[0,1]+AA\[1,1]\*BB\[1,1]=3, AA\[1,0]\*BB\[0,1]+AA\[1,1]\*BB\[1,1]=4 가 나옵니다.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://sdc-james.gitbook.io/onebook/4.-numpy-and-scipy/4.1-numpy/4.1.1.-basic-operations.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
