https://numpy.org/doc/stable/reference/index.html
## numpy 1. numpy와 attribute
## 예제 4_1
```python
import numpy as np
def testArray():
a0 = [0,0.5,1.0,1.5,2.0] # dim = 5
# b = [1,2,3,4] dim = 4
b = [1,2,3,4,5]
a = np.array([a0,a0,b])
print('Type of a =>',type(a))
print(a)
print('-------------')
print(a[2:])
print(a[2:][0][2])
print('-------------')
print(a[:,2],np.e)
print('-------------')
#aa = np.array([])
#np.copyto(a,aa)
#print(aa)
return None
def main():
testArray()
return None
if __name__=='__main__':
main()
```
```
Type of a => <class 'numpy.ndarray'>
[[0. 0.5 1. 1.5 2. ]
[0. 0.5 1. 1.5 2. ]
[1. 2. 3. 4. 5. ]]
-------------
[[1. 2. 3. 4. 5.]]
3.0
-------------
[1. 1. 3.] 2.718281828459045
-------------
```
## 예제 4_1_0
```python
import numpy as np
def testArray():
a = np.array([1,2,3], dtype=np.float32)
b = np.array([[1,3,5,7,9],[0,2,4,6,8]],dtype=np.int16)
print(a)
print(b)
# sum, prod
print('sum of a:',a.sum())
print('product of a:',a.prod())
# std 표준편차, mean
print('std of a:',a.std())
print('mean of a:',a.mean())
# cumsum(합), cumprod(곱)
print('cumulative sum of a:',a.cumsum())
print('cumprod of a:',a.cumprod())
# math function
print('1==',np.log(np.e))
# 열 지정해서 합
print(b[:,1].sum())
# 열끼리 합
#use_sum = []
#for k in range(len(list(a[0]))):
# use_sum += [b[:,k]]
# gradient
print('gradient of a:', np.gradient(a))
return None
def main():
testArray()
return None
if __name__ =='__main__':
main()
```
```
[1. 2. 3.]
[[1 3 5 7 9]
[0 2 4 6 8]]
sum of a: 6.0
product of a: 6.0
std of a: 0.8164966
mean of a: 2.0
cumulative sum of a: [1. 3. 6.]
cumprod of a: [1. 2. 6.]
1== 1.0
5
gradient of a: [1. 1. 1.]
```
## 예제 4_2
```python
# ndarray attributes
import numpy as np
def testNumpyArray():
a = np.array([1,2,3,4,5], dtype='i8') # construct an ndarray
#list up attributes
print('a type : ', type(a), ' and element type :', a.dtype, sep='')
print(a)
# size, ndim, shape, nbytes, itemsize
# parameters : i2, i4, i8
L1 = [1,2,3,4,5]
L2 = [1,2,3,4,5,1,2,3,4,5]
dtypelist = ['i2','i4','i8']
for tmp in dtypelist:
a1 = np.array(L1, dtype = tmp)
print('------type is',tmp)
print('size :',a1.size)
print('ndim :', a1.ndim)
print('shape : ',a1.shape)
print('nbytes : ',a1.nbytes)
print('itemsize : ', a1.itemsize)
print()
for tmp in dtypelist:
a1 = np.array(L2, dtype = tmp)
print('------type is',tmp)
print('size :',a1.size)
print('ndim :', a1.ndim)
print('shape : ',a1.shape)
print('nbytes : ',a1.nbytes)
print('itemsize : ', a1.itemsize)
print()
return None
def testNumpyArray2():
b = np.array([1.3,2.44,-9.01687,4.99,0])
print('dtype :', b.dtype) # f8
print('nbytes :', b.nbytes)
print('shape :', b.shape)
print('itemsize :', b.itemsize)
return None
def testNumpyArray3():
c = np.array([10,2,3,4,5])
print(c)
c[0] = 100
print('updated:', c)
c[4] = -10.88 # float를 넣어도 원래 type인 int로 바뀌어서 들어간다
print('updated2:', c)
print(c.dtype)
return None
def testNumpyArray4():
c = np.array([100,2,3,4,-10])
d = c[1:3]
print(d)
#d[1:3] = 30,40 # ValueError: could not broadcast input array from shape (2,) into shape (1,)
print(d)
return None
def main():
testNumpyArray()
print('--------------------------')
testNumpyArray2()
print('--------------------------')
testNumpyArray3()
print('--------------------------')
testNumpyArray4()
return None
if __name__ == '__main__':
main()
```
```
a type : <class 'numpy.ndarray'> and element type :int64
[1 2 3 4 5]
------type is i2
size : 5
ndim : 1
shape : (5,)
nbytes : 10
itemsize : 2
------type is i4
size : 5
ndim : 1
shape : (5,)
nbytes : 20
itemsize : 4
------type is i8
size : 5
ndim : 1
shape : (5,)
nbytes : 40
itemsize : 8
------type is i2
size : 10
ndim : 1
shape : (10,)
nbytes : 20
itemsize : 2
------type is i4
size : 10
ndim : 1
shape : (10,)
nbytes : 40
itemsize : 4
------type is i8
size : 10
ndim : 1
shape : (10,)
nbytes : 80
itemsize : 8
--------------------------
dtype : float64
nbytes : 40
shape : (5,)
itemsize : 8
--------------------------
[10 2 3 4 5]
updated: [100 2 3 4 5]
updated2: [100 2 3 4 -10]
int32
--------------------------
[2 3]
[2 3]
```
0 댓글