Python/Numpy
Numpy_04
BSHwan
2019. 8. 11. 17:17
반응형
In [1]:
import numpy as np
Numpy 배열의 Boolean Indexing¶
- 다수개의 배열에서 특정 값을 추출할 때 사용한다.
- 배열이름[조건]
- TRUE, FALSE로 값이 표시된다.
names ndArray 배열에서 True, False로 표시된다.¶
In [2]:
names = np.array(['Charles','Jhon',
'Hayoung','Charles',
'Hayoung','Jhon',
'Elise'])
names
Out[2]:
True/False로 구성된 ndArray 생성¶
In [3]:
names == 'Charles'
Out[3]:
다른 ndArray 배열에 배열[조건식]으로 적용¶
In [5]:
# 실수형 난수 7행4열
data = np.random.randn(7,4)
data
Out[5]:
data에서 names 의 True 값이 적용된 1, 4행 만 추출¶
In [6]:
data[names=='Charles']
Out[6]:
In [7]:
names == 'Jhon'
Out[7]:
True 값이 적용된 2, 6행 만 추출¶
In [8]:
data[names=='Jhon']
Out[8]:
| 연산자 이용하기¶
- 조건식1 | 조건식2 : OR 합집합
In [9]:
names
Out[9]:
In [10]:
(names == "Charles")| (names=='Jhon')
Out[10]:
True 값이 적용된 1,2, 4,6행 만 추출¶
In [11]:
data[(names == "Charles")| (names=='Jhon')]
Out[11]:
마스크 적용 후 true 값 갯수 구하기¶
- (조건).sum()
In [12]:
data = np.random.randn(3,3)
data
Out[12]:
In [13]:
data > 0
Out[13]:
In [14]:
(data>0).sum()
Out[14]:
Boolean Index를 자기자신의 넘파이배열에 적용¶
- 조건식을 만족하는 실제 값을 얻을 수 있다
In [15]:
data[data>0]
Out[15]:
퀴즈¶
1~100 의 숫자중 20개를 난수로 추출한 후
4행 5열의 넘파이 배열로 생성한다.
이중 50이 넘은 숫자만 추출한다.
In [27]:
numlist = np.random.randint(1,101, size=20)
numlist
Out[27]:
In [28]:
numlist = numlist.reshape(4,5)
numlist
Out[28]:
In [29]:
numlist[numlist>50]
Out[29]:
- 50개의 난수값으로 구성된 넘파이 배열 생성하기¶
In [30]:
large_arr = np.random.randn(50)
large_arr
Out[30]:
- 내림차순으로 소팅 : np.sort(배열명)[::-1]¶
In [32]:
large_arr2 = np.sort(large_arr)[::-1]
large_arr2
Out[32]:
전체 길이를 구한 후 상위 5프로 , 0.05를 곱한 후 정수형으로 변환¶
In [33]:
# 전체길이
len(large_arr)
Out[33]:
In [34]:
# 5퍼센트에 해당하는 인덱스 구하기
n = int(0.05*len(large_arr))
n
Out[34]:
상위 5프로에 해당하는 인덱스까지 추출¶
In [35]:
large_arr2[0:n]
Out[35]:
샘플자료 : ratings.dat¶
``` movieLens : 영화에 대한 평점 데이타
아이디 영화번호 평점 ?
[ 1, 1193, 5, 978300760]
실제 데이타 형태는?
1 :: 1193 :: 5 :: 978300760
```
dat 파일불러온 후 5개만 표시하기¶
In [40]:
data = np.loadtxt('data/ratings.dat', delimiter='::', dtype=np.int64)
data[:5, :]
Out[40]:
In [41]:
# 데이타 전체 구조 확인
data.shape
Out[41]:
3열 평점 데이타를 10개만 추출하기¶
In [43]:
data[:10, 2]
Out[43]:
3열의 평균구하기¶
In [44]:
mean_rating_total = data[:,2].mean()
mean_rating_total
Out[44]:
csv 파일로 10개만 추출해서 저장하기¶
In [48]:
data = np.loadtxt('data/ratings.dat', delimiter='::', dtype=np.int64)
data = data[:10, :]
data
Out[48]:
In [49]:
np.savetxt("data/data.csv", data, fmt='%.3f', delimiter=',')
반응형