numpy[1]

匯入numpy

import numpy as np    #使用np來簡化輸入名稱

Numpy數據類型

  • 每個python內建類型都有一個唯一定義它的字符代碼:
    ‘b’:布爾值
    ‘i’:符號整數
    ‘u’:無符號整數
    ‘f’:浮點
    ‘c’:複數浮點
    ‘m’:時間間隔
    ‘M’:日期時間
    ‘O’:Python 對象
    ‘S’, ‘a’:字節串
    ‘U’:Unicode
    ‘V’:原始數據(void)
    第一個字符指定數據的類型,其餘字符指定每個項目的字節數,Unicode除外,其中它被解釋為字符數。項目大小必須對應於現有類型,否則將出現錯誤。
    前綴<或>。<是小端(最小有效字節存儲在最小地址中)。>是大端(最大有效字節存儲在最小地址中)。
import numpy as np 
a = np.dtype('<i2')
a1 = np.array([32766,32768],dtype=a)
b = np.dtype('>i2')
b1 = np.array([32766,32768],dtype=b)
print('i2內建數據類型:','\n<i2:',a,'\n>i2:',b,'\n32768超過i2大小->溢位:','\na1:',a1,'\nb1:',b1)

i2內建數據類型:
<i2: int16
>i2: >i2
32768超過i2大小->溢位:
a1: [ 32766 -32768]
b1: [ 32766 -32768]

  • NumPy 數字類型是dtype對象的實例:

  • 自定義dtype數據類型:

  1. 方法一
import numpy as np 
student = np.dtype([('name','S20'),  ('age',  'i1'),  ('student_ID',  'i4')]) 
Department_of_Chemistry_student = np.array([('jeff',  21,  50),('dora',  18,  75)], dtype = student)
print('學生結構:\n',student)
print('化學系學生的名子:\n',Department_of_Chemistry_student['name'],'\n化學系學生的年齡:\n',Department_of_Chemistry_student['age'])
print('索引0的學生資料:\n',Department_of_Chemistry_student[0])

學生結構:
[(‘name’, ‘S20’), (‘age’, ‘i1’), (‘student_ID’, ‘<i4’)]
化學系學生的名子:
[b’jeff’ b’dora’]
化學系學生的年齡:
[21 18]
索引0的學生資料:
(b’jeff’, 21, 50)

  1. 方法二
import numpy as np
new_student = np.dtype({
   
    'names':['name','age','weight(kg)','height(cm)'],
    'formats':['S30','i','f','f']}, align=True)
new_Department_of_Chemistry_student = np.array([('Zhang',32,72.5,167),
              ('Wang',24,65,170)],dtype=new_student)
print('學生結構:\n',new_student)
print('化學系學生的名子:\n',new_Department_of_Chemistry_student['name'],'\n化學系學生的年齡:\n',new_Department_of_Chemistry_student['age'])

學生結構:
{‘names’:[‘name’,‘age’,‘weight(kg)’,‘height(cm)’], ‘formats’:[‘S30’,’<i4’,’<f4’,’<f4’], ‘offsets’:[0,32,36,40], ‘itemsize’:44, ‘aligned’:True}
化學系學生的名子:
[b’Zhang’ b’Wang’]
化學系學生的年齡:
[32 24]

offsets:
結構數據的byte偏移量,S以4byte為單位(30視為32),‘i4’=32bit=4byte,‘f4’=32bit=4byte
itemsize:
結構數據的總大小(byte)
aligned:

數據是否對齊

  • NumPy字節(byte順序)交換
    numpy.ndarray.byteswap()函數在兩個表示之間切換:bigendian(大端)和little-endian(小端)。
import numpy as np 
a = np.array([1,  256,  8755], dtype = np.int16)  
print('數組:\n',a)
print('十六進制表示記憶體中的資料:')
print(np.array([hex(a[j])for j in range(3)])) 
print('\n數組(調用byteswap()函數後):')  
print(a.byteswap(True)) 
print('十六進制表示記憶體中的資料:')
print(np.array([hex(a
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值