pythonclip
A. python基礎 numpy中的常見函數有哪些
有些Python小白對numpy中的常見函數不太了解,今天小編就整理出來分享給大家。
Numpy是Python的一個科學計算的庫,提供了矩陣運算的功能,其一般與Scipy、matplotlib一起使用。其實,list已經提供了類似於矩陣的表示形式,不過numpy為我們提供了更多的函數。
數組常用函數
1.where()按條件返回數組的索引值
2.take(a,index)從數組a中按照索引index取值
3.linspace(a,b,N)返回一個在(a,b)范圍內均勻分布的數組,元素個數為N個
4.a.fill()將數組的所有元素以指定的值填充
5.diff(a)返回數組a相鄰元素的差值構成的數組
6.sign(a)返回數組a的每個元素的正負符號
7.piecewise(a,[condlist],[funclist])數組a根據布爾型條件condlist返回對應元素結果
8.a.argmax(),a.argmin()返回a最大、最小元素的索引
改變數組維度
a.ravel(),a.flatten():將數組a展平成一維數組
a.shape=(m,n),a.reshape(m,n):將數組a轉換成m*n維數組
a.transpose,a.T轉置數組a
數組組合
1.hstack((a,b)),concatenate((a,b),axis=1)將數組a,b沿水平方向組合
2.vstack((a,b)),concatenate((a,b),axis=0)將數組a,b沿豎直方向組合
3.row_stack((a,b))將數組a,b按行方向組合
4.column_stack((a,b))將數組a,b按列方向組合
數組分割
1.split(a,n,axis=0),vsplit(a,n)將數組a沿垂直方向分割成n個數組
2.split(a,n,axis=1),hsplit(a,n)將數組a沿水平方向分割成n個數組
數組修剪和壓縮
1.a.clip(m,n)設置數組a的范圍為(m,n),數組中大於n的元素設定為n,小於m的元素設定為m
2.a.compress()返回根據給定條件篩選後的數組
數組屬性
1.a.dtype數組a的數據類型
2.a.shape數組a的維度
3.a.ndim數組a的維數
4.a.size數組a所含元素的總個數
5.a.itemsize數組a的元素在內存中所佔的位元組數
6.a.nbytes整個數組a所佔的內存空間7.a.astype(int)轉換a數組的類型為int型
數組計算
1.average(a,weights=v)對數組a以權重v進行加權平均
2.mean(a),max(a),min(a),middle(a),var(a),std(a)數組a的均值、最大值、最小值、中位數、方差、標准差
3.a.prod()數組a的所有元素的乘積
4.a.cumprod()數組a的元素的累積乘積
5.cov(a,b),corrcoef(a,b)數組a和b的協方差、相關系數
6.a.diagonal()查看矩陣a對角線上的元素7.a.trace()計算矩陣a的跡,即對角線元素之和
以上就是numpy中的常見函數。更多Python學習推薦:PyThon學習網教學中心。
B. 如何理解這段python程序
convolve 這個函數應該是 輸入的numpy.array,按照權值weight,
以(i,j)點的鄰域 行列式(i:i+w,j+j+h)和行列式wight進行 行列式相乘 得到的結果為新的(i,j)
說白了就是權值的相加減的問題,梯度不剃度我就不知了額
C. 誰知道如何在python中用處理wav文件,並且對他的頻譜進行分析的程序
1.讀取wav文件
# -*- coding: utf-8 -*-
import wave
import pylab as pl
import numpy as np
# 打開WAV文檔
f = wave.open(r"c:\WINDOWS\Media\ding.wav", "rb")
# 讀取格式信息
# (nchannels, sampwidth, framerate, nframes, comptype, compname)
params = f.getparams()
nchannels, sampwidth, framerate, nframes = params[:4]
# 讀取波形數據
str_data = f.readframes(nframes)
f.close()
#將波形數據轉換為數組
wave_data = np.fromstring(str_data, dtype=np.short)
wave_data.shape = -1, 2
wave_data = wave_data.T
time = np.arange(0, nframes) * (1.0 / framerate)
# 繪制波形
pl.subplot(211)
pl.plot(time, wave_data[0])
pl.subplot(212)
pl.plot(time, wave_data[1], c="g")
pl.xlabel("time (seconds)")
pl.show()
2.觀察信號頻譜
# -*- coding: utf-8 -*-
import numpy as np
import pylab as pl
sampling_rate = 8000
fft_size = 512
t = np.arange(0, 1.0, 1.0/sampling_rate)
x = np.sin(2*np.pi*156.25*t) + 2*np.sin(2*np.pi*234.375*t)
xs = x[:fft_size]
xf = np.fft.rfft(xs)/fft_size
freqs = np.linspace(0, sampling_rate/2, fft_size/2+1)
xfp = 20*np.log10(np.clip(np.abs(xf), 1e-20, 1e100))
pl.figure(figsize=(8,4))
pl.subplot(211)
pl.plot(t[:fft_size], xs)
pl.xlabel(u"時間(秒)")
pl.title(u"156.25Hz和234.375Hz的波形和頻譜")
pl.subplot(212)
pl.plot(freqs, xfp)
pl.xlabel(u"頻率(Hz)")
pl.subplots_adjust(hspace=0.4)
pl.show()
D. 用Python寫過哪些的小工具
為了逃避學校布置的美術作業,寫過一個畫素描的程序。
從後再也不擔心美術作業了。
也就是利用Python的PIL庫來 將彩色圖片轉化為素描效果的圖片
更新說明:
前面那個程序寫的太粗糙了,不好意思拿出來分享,重新寫了一遍,加上了GUI圖形界面。
配置環境:
windows 10
python 3.5
image.py
from PIL import Image
import numpy as np
import os
import join
import time
def image(sta,end,depths=10):
a = np.asarray(Image.open(sta).convert('L')).astype('float')
depth = depths # (0-100)
grad = np.gradient(a) # 取圖像灰度的梯度值
grad_x, grad_y = grad # 分別取橫縱圖像梯度值
grad_x = grad_x * depth / 100.
grad_y = grad_y * depth / 100.
A = np.sqrt(grad_x ** 2 + grad_y ** 2 + 1.)
uni_x = grad_x / A
uni_y = grad_y / A
uni_z = 1. / A
vec_el = np.pi / 2.2 # 光源的俯視角度,弧度值
vec_az = np.pi / 4. # 光源的方位角度,弧度值
dx = np.cos(vec_el) * np.cos(vec_az) # 光源對x 軸的影響
dy = np.cos(vec_el) * np.sin(vec_az) # 光源對y 軸的影響
dz = np.sin(vec_el) # 光源對z 軸的影響
b = 255 * (dx * uni_x + dy * uni_y + dz * uni_z) # 光源歸一化
b = b.clip(0, 255)
im = Image.fromarray(b.astype('uint8')) # 重構圖像
im.save(end)
def mains(numbers):
number = int(numbers)
startss = os.listdir(".\輸入----圖片")
time.sleep(2)
for starts in startss:
start = ''.join(starts)
print('正在轉化--圖片: ' + start)
sta = './' + '輸入----圖片/' + start
end = './' + '輸出----圖片/' + 'HD_20' + start
image(sta=sta,end=end,depths=number)
簡單來說,就是利用python的Numpy庫,將圖像降維轉化為數字化的數據,之後對數據進行操作,再利用pillow庫將操作好的數據轉化為素描效果的圖片。
GUI圖形界面程序
main.py
import os
from image import mains
from tkinter import *
def exists_mkdir():
if os.path.exists('輸出----圖片') and os.path.exists('輸入----圖片'):
pass
else:
os.mkdir('輸出----圖片')
os.mkdir('輸入----圖片')
def images():
try:
s1 = e1.get()
a = mains(s1)
c["text"] = "我們的程序運行成功了"
except Exception:
c["text"] = "程序運行出錯了,可能是缺少了兩個配置文件"
#創建程序運行需要的工作目錄
exists_mkdir()
tk = Tk()
# 設置窗口大小和位置
tk.geometry('430x350+80+60')
# 不允許改變窗口大小
tk.resizable(False, False)
## 用來顯示Label組件
tk.title('素描圖生成器')
w1 = Label(tk,text='作者博客:www.liuchaoblog.live')
w = Label(tk,text='')
w2 = Label(tk,text='歡迎使用:')
w3 = Label(tk,text='步驟一:將需要轉化的圖片放入 輸入----圖片 文件夾下')
w4 = Label(tk,text='步驟二:輸入 0-100的數值,數值越大,顏色越深。--------標准參數是 10 ')
w5 = Label(tk,text='步驟三:點擊確認 運行程序 等待出現提示')
w6 = Label(tk,text='步驟四:到輸入----圖片 文件夾找到素描圖')
w1.grid(row=0,column=0,sticky=W)
w.grid(row=1,column=0,sticky=W)
w2.grid(row=2,column=0,sticky=W)
w3.grid(row=3,column=0,sticky=W)
w4.grid(row=4,column=0,sticky=W)
w5.grid(row=5,column=0,sticky=W)
w6.grid(row=6,column=0,sticky=W)
l = Label(tk,text="輸入 0-100的數值")
l.grid(row=8,column=0,sticky=E)
## 用來顯示輸入框
e1 = Entry(tk)
e1.grid(row=10,column=0,sticky=E)
## 用來顯示Button
b = Button(tk,text='確定',command=images)
b.grid(row=12,column=0,sticky=E)
c = Label(tk,text="",background="yellow")
c.grid(row = 15)
# 啟動消息主循環
tk.mainloop()
運行效果:
這個程序我用pyinstaller做成exe文件了。
E. 交叉熵損失函數是什麼
平滑函數。
交叉熵損失函數,也稱為對數損失或者logistic損失。當模型產生了預測值之後,將對類別的預測概率與真實值(由0或1組成)進行不比較,計算所產生的損失,然後基於此損失設置對數形式的懲罰項。
在神經網路中,所使用的Softmax函數是連續可導函數,這使得可以計算出損失函數相對於神經網路中每個權重的導數(在《機器學習數學基礎》中有對此的完整推導過程和案例,這樣就可以相應地調整模型的權重以最小化損失函數。
(5)pythonclip擴展閱讀:
注意事項:
當預測類別為二分類時,交叉熵損失函數的計算公式如下圖,其中y是真實類別(值為0或1),p是預測類別的概率(值為0~1之間的小數)。
計算二分類的交叉熵損失函數的python代碼如下圖,其中esp是一個極小值,第五行代碼clip的目的是保證預測概率的值在0~1之間,輸出的損失值數組求和後,就是損失函數最後的返回值。
F. python piperclip是什麼
python pyperclip模塊,主要用途是復制、粘貼。
G. python代碼分割柵格
恐怕是你定義了一個叫做"len"的變數其當前數據類型為"int"
H. python用ctypes操作剪切板遇到問題!!
這邊執行沒有問題,版本如下
Python3.5.0(v3.5.0:374f501f4567,Sep132015,02:27:37)[MSCv.190064bit(AMD64)]onwin32
代碼如下
importctypes
defget():
'''從剪切板中獲得字元串'''
h=ctypes.WinDLL('user32.dll')
h.OpenClipboard(0)
aa=h.GetClipboardData(13)
ss=ctypes.c_wchar_p(aa)
h.CloseClipboard()
returnss.value
defset(mystr):
'''把字元串放到剪切板中,成功返回1,失敗返回0'''
u=ctypes.WinDLL('user32.dll')
k=ctypes.WinDLL('kernel32.dll')
s=mystr.encode('utf-16')
s=s[2:]+b'