파이썬 3 (XXV) 팬더 항목의 과학 컴퓨팅 (b)

일반적인 기능 : 기능의 설정 요소를 신속하게 진행

일반적인 기능 (ufunc)는 데이터 요소 ndarray 레벨 동작을 수행하는 기능이다. 우리는 간단한 함수로 볼 수있다 벡터화 래퍼 (하나 개 이상의 스칼라와 하나 이상의 스칼라 생성을 허용).

대부분의 일반적인 기능 요소는 간단한 단계의 변형입니다 같은 SQRT 및 특급 등 :

가져올 순이익으로 NumPy와 
도착 = np.arange (10 )
 인쇄 (np.sqrt (도착))

 ============================= =========== 
[0.         1. 1.41421356 1.73205081 2. 2.23606798 
 2.44948974 2.64575131 2.82842712 3 . ]
 ======================================== 인쇄 (np.exp (도착)) ======================================== 
[ 1.00000000e + 00 + 00 2.71828183e 7.38905610 E + 00 + 01 2.00855369e 
 5.45981500e 1.48413159e + 01 + 02 + 02 4.03428793e 1.09663316e + 03 
 2.98095799e 8.10308393e + 03 + 03 ]
 ================== ======================



다음 표는 일반적으로 사용되는 모노 및 디카 르 ufunc ufunc을 나열
한 가지 위안 ufunc
기능 
설명
복근, FBS
계산 정수, 부동 소수점 또는 복소수의 절대 값. 복잡하지 않은 값에 대해, 당신은 빠른 FBS를 사용할 수 있습니다
SQRT
각 요소의 제곱근을 계산하는 것은 도착 ** 0.5에 해당
광장
각 요소의 제곱을 계산하는 것은 도착 ** 2에 해당
특급
각 엘리먼트 (E)의 계산 인덱스
log1p, LOG2, LOG10, 로그인  자연 로그 (베이스 E) 상기 (10) 기재가 로그되고 2 로그 (1 + X)를베이스 로그
기호   각 요소의 부호 계산 : 1 (포지티브), 0 (제로) - 1 (네거티브)
올림  실링 요소의 값 이상, 즉 가장 작은 정수 값을 계산
바닥 값은 각 층 요소에 대해 계산되고, 그 최대 정수 값 이하인
린  각 요소의 값은 가장 가까운 정수로 유지 DTYPE 반올림
modf는   정수 부분과 두 개의 독립적 인 배열의 배열로 반환 소수
때는 isNaN   a는 부울 배열 "NaN 값 (이것은 숫자가 아닌) 무엇인가"반환
isFinite에, isinf   각각에 반환 ​​대표 부울 배열 "무한 어떤 요소" "요소가 유한 어느 (비-INF, 비 NaN이)"또는
왜냐하면, 곤봉, 죄, 출생, 황갈색, 비린내 일반 및 쌍곡선 삼각 함수
ARCCOS, arccosh, 다 arcsin, arcsinh, 아크 탄젠트, arctanh 역 삼각 함수
logical_not 각 요소의 notx의 진정한 가치를 계산. 등가 -arr




























두 위안 ufunc
기능 설명
더하다 합에 대응하는 배열 요소
덜다  제 배열에서 제 2 어레이의 소자를 감산
곱하다  어레이 요소는 승산
분할, floor_divide 부문 또는 아래로 라운드 나눌 방법 (나머지를 폐기)
힘  어레이 A의 첫 번째 요소는 제 2 어레이의 소자 B에 따른 행, A, B를 산출 전력
최대 FMAX 최대 요소 레벨의 계산. FMAX는 NaN를 무시
최소 FMIN 요소 계산 단계의 최소 수. FMIN는 NaN를 무시
모드 모듈로 연산 단계 소자 (나눗셈의 나머지)
copysign 배열의 첫 번째 값과 두 번째 복사본의 배열의 심볼 값들
이상, greater_equal,
이하 less_equal, 동등 not_equal
비교 연산 요소 레벨을 수행하고, 궁극적으로 부울 배열을 생산하고 있습니다. 연산자에 대응 중위>,> =, <, <=, ==,! =
logical_and, logical_or, logical_xor 논리 연산의 참값 소자 와이즈 수행. 이 연산자를 중위에 해당 &, |, ^



















II는. 데이터 처리를 사용하여 어레이

 

 NumPy와 배열 우리 많은 데이터 처리 작업은 간단한 배열 식으로 표현 될 수 있도록 (달리 사이클을 쓸 필요). 대신 배열 식 루프 방식을 사용하는 통상적으로 벡터링 함. 크기의 하나 또는 두 개의 명령 빠르게 (또는 그 이상), 특히 다양한 수치 계산에 해당하는 순수 파이썬 예보다 일반적 벡터화 어레이 동작. 

우리는 함수 SQRT을 계산하려한다고 가정 (X ^ 2 Y ^ 2 +) 값 (격자 형)의 집합은 np.meshgrid 함수는 2 차원 배열을 받아, 두 어레이에 대응 (이차원 행렬을 발생 모든 (x, y)의 쌍)

#의 코딩 :. UTF 8- 

오기 PLT의 AS matplotlib.pyplot
 오기 NP의 AS NumPy와 

포인트 = np.arange (-5,5,0.01) # 1000 등 간격의 포인트 
, YS = XS np.meshgrid (점, 점)
 전단 ( XS)
 전단 (YS) 


[ -5. ... 4.97 4.98 4.99 -4.99 -4.98 ] 
 [ -5. ... 4.97 4.98 4.99 -4.99 -4.98 ] 
 [ -5. ... 4.97 4.98 -4.99 -4.98 4.99 ] 
 ... 
 [ -5. 4.97 4.98 4.99 -4.99 -4.98 ... ] 
 [ -5. ... 4.98 4.99 -4.99 -4.98 4.97 ] 
 [-5. -4.99 -4.98 4.97 4.98 4.99 ... ]
 ====================================== == 
[ -5. -5. -5. ... -5. -5. -5 . ] 
 [ -4.99 -4.99 -4.99 -4.99 -4.99 -4.99 ... ] 
 [ -4.98 -4.98 -4.98 -4.98 -4.98 -4.98 ... ] 
 ... 
 [ 4.97 4.97 4.97 4.97 4.97 4.97 ... ] 
 [ 4.98 4.98 4.98 4.98 4.98 4.98 ... ] 
 [ 4.99 4.99 4.99 4.99 4.99 4.99 ...]

이제 두 개의 부동 소수점 숫자로이 두 배열은 표현과 같이 쓸 수있다

np.sqrt Z는 = (X + 2 YS ** 2 )
 잉크 (z)

 ============================== ========== 
[ 7.07106781 7.06400028 7.05693985 7.04988652 7.05693985 7.06400028 ... ] 
 [ 7.06400028 7.05692568 7.04985815 7.04279774 7.04985815 7.05692568 ... ] 
 [ 7.05693985 7.04985815 7.04278354 7.03571603 7.04278354 7.04985815 ... ] 
 ... 
 [ 7.04988652 7.04279774 7.03571603 7.03571603 7.04279774 7.0286414 ... ] 
 [ 7.05693985 7.04985815 7.04278354 7.03571603 7.04278354 7.04985815 ... ] 
 [ 7.06400028 7.05692568 7.04985815 7.04279774 7.04985815 7.05692568 ...]]
plt.imshow (Z, cmap를 = plt.cm.gray) 
plt.colorbar () 
plt.title ( " $ \ SQRT 이미지 플롯 {X ^ 2 + y ^ 2} 값 그리드 $ " ) 
plt.show () # 显示图形

 

 

 

1. 상태 로직 어레이의 동작은 다음과 같이 표현

# Numpy.where 함수 경우 조건 Y 다른 버전의 삼원 발현 벡터 X이다. 우리가 배열에서 부울 배열과 두 개의 값이 있다고 가정
np.array xarr = ([6.1,6.2,6.3,6.4,6.5]) 
Yarr np.array = ([8.1,8.2,8.3,8.4,8.5])
COND = ([참, 거짓, 참, 거짓 np.array 참])
# 이제 우리는 COND의 값에 따라 값 xarr 및 yarr을 선택합니다 설명 : cond에 해당하는 경우, 그렇지 않으면 xarr 값을 선택 값 yarr을 선택합니다. 다음과 같이 목록 이해하는 연습입니다
결과 = [X, Y, ZIP에서 Z (xarr, Yarr에서 cond)에 대한합니다 (다른 X Y Z IF)]
인쇄 (결과)
#이 몇 가지 문제가있다 : 첫째, 그것을 (모든 작업이 순수 파이썬을 수행하기 때문에) 큰 배열 처리 속도가 두 번째, 빠른되지 않습니다 :하지 다차원 배열을 위해.
np.where # 사용되는 경우, 상기 기능은 매우 간단한에 기록 될 수있다

결과 = np.where (COND, xarr, Yarr)
출력 (결과)
# 1 번째 및 세 번째 파라미터 수를 배열하지 않아도 np.where 그들은 스칼라 값이 될 수있다. 전형적으로 다른 배열에 따른 새로운 배열을 생성하는 데 사용되는 데이터를 분석한다.
# 매트릭스의 임의의 배열을 가정하면, 우리는 (2 개) 및 음의 값 모두를 대체 -2 모두 양의 값을 사용하여 대체 np.where 매우 간단 할 것인지

도착 np.random.randn = (4,4)
인쇄 (ARR)
new_arr = np.where (ARR> 0,2, -2)
# 전단 (new_arr)
# 전단 (np.where (ARR> 0.2, ARR)) 값만 세트 # 2
# 전단 (도착 np.where (<0,0 , 도착)) # 0은 음의 값으로 만 설정
# 요약
두 가지의 np.where # :
# 먼저 사용 np.where (조건 X, Y 있으면)이 만족 (condituons) 예로서, 변수 Y의 어레이로서 배열 변수 다른 X
인덱스에 대응하는 배열 수득 # 번째 구문 np.where (조건)
# 1 차원 배열
X = np.arange (16)
인쇄 (X [np.where (X> 5).])
# 출력 (어레이 (INT64 DTYPE =), 6 ,. 7 ,. 8 ,. 9, 10 ,. 11, 12이, 13이며, 14, 15.])
차원 # 어레이
X = np.arange (16) .reshape (4,4)
전단 (X)
인쇄 (np.where (X>. 5)) #는 한 차원 좌표 앞의 좌표 인 2 차원 좌표를 다음

2. 수학적 통계 방법은

어레이의 수학적 함수는 전체 어레이 또는 축들의 세트의 통계 데이터를 산출 할 수있다.

np.random.randn ARR = (5,4) 
인쇄 (ARR)
인쇄 (arr.mean ()) # 축없는 값의 m * n을 평균 수가, 실수 복귀 설정된
인쇄 (arr.sum ())
인쇄 (arr.mean (축선 = 1) ) #axis = 1 : 각 행의 평균 반환 m 요소들의 1 차원 배열
인쇄 (arr.mean (축선 = 0) ) = 0 #axis : 평균 각 열에 N 개의 1 차원 배열의 요소를 리턴

# 기타 이러한 cumsum, 중합 cumprod 법을 등은 아니지만, 그 결과는 중간 이루어지는 배열
arr1 = np.array ([1,2,3] , [4 5,6])
인쇄 (arr1.cumsum (0)) 각 열의 엘리먼트 #에 대응하는 누적 첨가
원소의 각각의 행에 대응하는 출력 (arr1.cumsum (1)) # 누적 부가
인쇄 (arr1.cumprod (0)) 축적의 해당 요소를 곱한 각 열에 #
(arr1.cumprod (1)) # 소자의 각 행에 대응하는 출력은 총 곱

통계적 방법의 기본 어레이

방법
설명
합집합
전체 또는 배열 요소 축 방향으로 합계의 일부. 합산 배열 길이가 0 인 영
평균
산술 평균. 그것은 NaN이 제로 길이의 배열을 의미
표준이었다
분산과 표준 편차는 각각 자유의 조정도 (기본 N)
최대, 최소
최대 값과 최소값
argmin, argmax
각각 최소 및 최대 요소 인덱스
cumsum
모든 요소의 누적 합계
cumprod
모든 요소의 누적 생성물



 

 

 

 

 

 

 

 

 

 

# 정렬 

파이썬에 내장 된 목록 유형과 같은 #, NumPy와 배열을 정렬 할 수도 있습니다 정렬 방법
np.array ARR = ([1, 4,2], [7,2,6]) 
인쇄 (arr.sort (0)) # 소형 ~ 대형의 각 열에 정렬 0
인쇄 (ARR)
프린트 (arr.sort (1)) # 소형 ~ 대형의 각 행에 대하여 1 - 정렬
인쇄 (도착)
 
# 웰의 유일한 논리적 컬렉션 

#Numpy은 일차원 ndarray 일부 기본적인 동작을 제공한다. 는 가장 일반적으로 사용되는 몇 가지 배열에서 고유 한 값을 찾기 위해 그것을 np.unique 결과 반환 분류 될 가능성이 높습니다
이름 = np.array ([ '고베' , '캘빈', 'Michale', '제임스' '캘빈」, 「고베」, 「고베」, 「캘빈'])
인쇄 (np.unique (이름))
번호 np.array = ([2,3,8,5,8,8,24,1,6 . 3)
인쇄 (np.unique (번호))

다음 표에 NumPy와 집계 함수 :

 

 

방법
설명
고유 (X) 
유일한 X의 요소, 그리고 순서로 결과를 반환
intersect1d (X, Y)
X 및 Y는 공통 요소에 산출 결과를 순서에 반환
union1d (X, Y)
결과를 순서에 X 및 Y 집합을 산출하고 반환
in1d (X, Y) 
"X와 Y의 요소를 포함하는"부울 배열을 가져옵니다
setdiff1d (X, Y)
아니라 X의 Y 방향, 즉 요소의 차이의 양을 설정
cumprod
모든 요소의 누적 생성물



 

추천

출처www.cnblogs.com/a-ant/p/11640303.html