基于Python的產品經理必備算法描述
產品經理需要懂點算法,作者用案例描述了幾種產品經理的必備算法。
未來的世界,一定是信息科技主導的世界。未來的任何產品,都離不開信息科技的支撐。不論你是哪個領域的產品經理,掌握一些基礎的算法,是非常有必要的。
而如今的一些比較優秀的產品經理,如蘋果產品創造人喬布斯,小米產品創造人雷軍,QQ產品創始人馬化騰,微信產品負責人張小龍,或多或少都有技術背景。當然,并不是說產品經理必須要有技術背景,因為有些沒有技術背景的產品經理做的也不錯。
本文想要表達的意思是,產品經理掌握一些基礎的算法,可以為自己的產品設計,產品邏輯,產品形態起到錦上添花的作用。因此,本文結合作者這些年的工作經驗,梳理出幾個比較簡單基礎的算法。
這些基礎算法,的確可以在產品設計過程中發揮作用,可以使產品經理在設計產品時,產品邏輯更加清晰,可以更加全面掌握產品特性。
本文的程序算法,使用大家比較常見的Python語言進行描述。
基礎算法
排序算法
排序算法有很多種,如冒泡排序、選擇排序、稀爾排序、歸并排序、堆排序、插入排序、快速排序等。如果是計算機專業這幾種算法應該是相當熟悉了,如果不是計算機專業的學生,其實全部掌握也沒必要。
用什么排序不重要,主要是知道其中的邏輯。
為了便于大家理解,還是直接以實例的形式進行講解;實例不是很復雜,主要是方便大家理解邏輯。
目前有一個數組,數組里是6個數,我們需要將這個數組里的數按從小到大順序排列。
待排序的數組:arr=[4,6,3,9,1,3]
基本實現思路:
- 構建一個臨時存放數據的參數:temp。
- 從數組中第一個元素開始,依次對兩個相鄰的元素進行比較,如果左側的數字大于右側的數字,則交換位置,交換位置,就需要用到temp。
- 運算過程:arr[0]=4,arr[1]=6,4<6,滿足條件,則繼續
- arr[2]=3,而6>3,則需要將 arr[1]和arr[2]交換位置,令temp =aar[1],這時temp的值是6,arr[1]=arr[2],這時arr[1]的值為3,arr[2]=temp,arr[2]值為6。
- arr[2]=6,再與arr[3]=9作比較,滿足條件。
- arr[3]=9再與arr[4]=1作比較,9大于4,交換。則arr[3]=1,arr[4]=9。
- arr[4]=9再與arr[5]=3作比較,9大于3,交換。則arr[4]=3,arr[5]=9。
- 這時的數組順序變為[4,3,6,1,3,9]。
- 繼續從數組的第一個元素開始,重復上述過程。
我們接下來看一下按照以上思路,數組中的元素是如何變化的:
- 第一次:[4,3,6,1,3,9]
- 第二次:[3,4,1,3,6,9]
- 第三次:[3,1,3,4,6,9]
- 第四次:[1,3,3,4,6,9]
我們為了驗證我們的思路,程序代碼如下:
聚類算法
聚類算法在實際生產生活中用途比較廣泛,像數據統計分析,人工智能識別物體,信息分類歸集等。比較常見的聚類算法有:凝聚層次聚類、圖團體檢測(Graph Community Detection)、K-Means(K均值)聚類、均值漂移聚類、基于密度的聚類方法(DBSCAN)、高斯混合模型(GMM)的最大期望(EM)聚類等。
當然,以上這些算法專業性太強了。如果不從事專門領域的工作,產品經理用到這些算法的可能性也很小。
本文今天講一個最為基礎的聚類算法,非常便于大家理解。
我們還是以數組為例,arr=[1,1,2,3,5,4,5,4,2,3,3,1,3,3,4,5],我們的所謂的聚類,就是要統計這個數組中每個數字出現的次數,最終我們想到達到這樣的輸出結果:
- 1出現3次
- 2出現2次
- 3出現5次
- 4出現3次
- 5出現3次
基本實現思路:
- 我們首先計算數字的長度,根據長度進行遍歷。
- 構建一個字典。當并數組中的值作為字典的key,出現的次數作為value。
- 如果某個元素沒有在字典中,則記錄這個元素為key,value初始為1。
- 如果某個元素已經存在在字典中,則更新這個元素的value+1。
- 遍歷完成,輸出字典值。
我們為了驗證我們的思路,程序代碼如下:
由于我們是沒有排序的,所以輸出順序與之前預想的順序有些差異。如果需要排序,則可以先將原數組中的數據排序后,再進行計算。
旋轉算法
旋轉的應用大家應該不陌生,最常見的就是手機或是電腦中查看照片的時候,照片的左轉右轉。圖片旋轉、視頻旋轉、文字內容旋轉,其實歸根到底都是數字矩陣的旋轉。
所有的這些表現形式,底層都是一個個二進制的數字組成的。接下來,我們就是要在最基礎的邏輯展開分析。
我們還是以數組進行講解。
我們有數組 arr=[[1,2,3],[4,5,6]],準備向右旋轉90度。為了便于大家理解,我這樣表示:
原數組:
[1,2,3]
[4,5,6]
我們認為,數組的寬度[1,2,3]=3,為x軸;數組的高度2,為y軸。
向右旋轉90度的后數組:
[3,6]
[2,5]
[1,4]
這時,寬度x變為2,高度y變為3。
基本實現思路:
1)我們觀查上述數組發現,向右旋轉90度后,組的維度由 2*3,變為了3*2。
2)而數字位置變化如下:
- 1:[0][0]->[2][0]
- 2:[0][1]->[1][0]
- 3:[0][2]->[0][0]
- 4:[1][0]->[2][1]
- 5:[1][1]->[1][1]
- 6:[1][2]->[0][1]
3)我們觀察上述數字變化,大家發現什么規律?每個數的數組x和y坐標都左右進行了對調,變換后的y坐標是原x坐標的倒序。
4)進行對原數組寬度x(設為i)和高度y(設為j)的遍歷,x遍歷i的增加,正是新數字的坐標的減少。
即:新數組位置([x-1-i][j]=舊數組位置([j][i])
我們為了驗證我們的思路,程序代碼如下:
為了便于大家理解,將原數組的值在遍歷的時候也進行了輸出展示。
我們再思維擴展一下,按我們這種思路,如果數組要向左旋轉90度呢?
原數組:
[1,2,3]
[4,5,6]
向左旋轉90度之后的數組:
[4,1]
[5,2]
[6,3]
即:
- 1:[0][0]->[0][1]
- 2:[0][1]->[1][1]
- 3:[0][2]->[2][1]
- 4:[1][0]->[0][0]
- 5:[1][1]->[1][0]
- 6:[1][2]->[2][0]
大家又會發現什么規律呢?
是不是新數組y坐標同原數組x坐標增長趨勢一致,而新數組x的坐標,是原數組x坐標的倒序?
也就是說,對原數組寬度x(設為i)和高度y(設為j)的遍歷,高度y遍歷j的增加,正是新數字的x坐標的減少。即:新數組位置([i][y-1-j]=舊數組位置([j][i])
我們為了驗證我們的思路,程序代碼如下:
經過上述分析,大家是不是對旋轉算法有了一個清晰的認識?
如果想旋轉180度呢?如果大家有興趣,可以按照上述思路進行分析實踐。
總結
對于產品經理而言,精通本領域的基礎知識,熟悉業務與產品模式是必須具備的技能。而于算法的了解和掌握,可以起到錦上添花的作用。
算法,是鍛煉產品經理的邏輯思維相對比較好的訓練工具。有興趣的同學,可以多看一些這方向的書籍,也有很多比較有意思的算法,可以在工作之余練練手,調節一下心情。畢竟產口經理的日常,不僅僅是寫個需求,更多的,還要看市場、看政策、看方向、看競品、懂運營、懂業務、懂管理、懂營銷、會分析、會溝通、會寫PPT,需要做的工作內容還很多。
而至于最終的產品能不能成功,還要看運氣。個人的力量太渺小了,很多產品經理的成功,其實是趕上了趨勢。處在大環境上升趨勢的時候,覺得自己的能力很強,其實有時候也是一種誤判。結果大環境一旦發生變化,處在下降趨勢的時候,往往就會把前幾年靠運氣積累的財富,這些年憑本事賠光了。
所以說,產品經理太難了。
正因為如此,產品經理需要時刻保持清醒客觀的頭腦,而算法是一個相當不錯的朋友,當你驕傲時讓你冷靜,當你自卑時給你信心,當你迷茫時給你方向。
感謝大家閱讀~
作者:王佳亮,中國計算機學會(CCF)會員。微信公眾號:佳佳原創
本文由 @佳佳原創 原創發布于人人都是產品經理,未經許可,禁止轉載
題圖來自Unspalsh, 基于CC0協議
樓主是什么類型的產品經理呢?數據的嗎 ,很想清楚數據產品經理日常工作要打代碼嗎