欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

numpy刪除單行、刪除單列、刪除多列實(shí)現(xiàn)方式

 更新時(shí)間:2024年02月22日 10:30:53   作者:嗖100  
這篇文章主要介紹了numpy刪除單行、刪除單列、刪除多列實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

numpy刪除單行、刪除單列、刪除多列

import numpy as np

刪除元素

通過index刪除單行、刪除單列、刪除多行

def delFun():
    """
    刪除
    :return:
    """
    source = np.array([[1, 2, 3], [1, 2, 3], [1, 2, 3]])

    # 刪除第三行
    del_arr_1 = source.copy()
    del_row = np.delete(del_arr_1, 2, axis=0)

    # 刪除第二列
    del_arr_2 = source.copy()
    del_col = np.delete(del_arr_2, 1, axis=1)

    # 刪除第二、三行
    del_arr_3 = source.copy()
    del_mult_row = np.delete(del_arr_3, (1, 2), axis=0)

    print(del_row)
    print(del_col)
    print(del_mult_row)

原始數(shù)據(jù)

	[
		[1 2 3]
 		[1 2 3]
 		[1 2 3]
 	]

del_row 刪除第三行 返回結(jié)果

	[
		[1 2 3]
 		[1 2 3]
 	]

del_col 刪除第二列 返回結(jié)果

	[
		[1 3]
		 [1 3]
		 [1 3]
	]

del_mult_row 刪除第二、三行 返回結(jié)果

	[
		[1 2 3]
	]

Numpy增加和刪除元素

1. delete

numpy.delete(arr, obj, axis=None):

  • arr:類數(shù)組。操作對(duì)象
  • obj:切片、整數(shù)或者整數(shù)數(shù)組。指示要沿指定軸(由參數(shù)axis指定)刪除的子數(shù)組的索引
  • axis:整數(shù)型,可選參數(shù)。指示刪除子數(shù)組(由參數(shù)obj指定)所沿的軸
  • axis = None:arr會(huì)先按行展開,然后按照obj,刪除第obj-1(從0開始)位置的數(shù),返回一個(gè)展開的arr
>>> arr = np.array([[1,2,3,4], [5,6,7,8], [9,10,11,12]])
>>> arr
array([[ 1,  2,  3,  4],
       [ 5,  6,  7,  8],
       [ 9, 10, 11, 12]])

# obj參數(shù)
>>> np.delete(arr,1,1)
array([[ 1,  3,  4],
       [ 5,  7,  8],
       [ 9, 11, 12]])

>>> np.delete(arr,[1,2],axis=1)
array([[ 1,  4],
       [ 5,  8],
       [ 9, 12]])

# axis參數(shù)
>>> np.delete(arr,1,0)
array([[ 1,  2,  3,  4],
       [ 9, 10, 11, 12]])
       
>>> np.delete(arr,1)
array([ 1,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12])

2. insert

numpy.insert(arr, obj, values, axis=None):沿著給定的軸(axis),在給定的索引(obj)之前插入值

  • arr:類數(shù)組。操作對(duì)象
  • obj:切片、整數(shù)或者整數(shù)數(shù)組。指示插入values的位置索引(可以是單個(gè)索引也可以是多個(gè)索引),values插入在這些索引之前。
  • values:類數(shù)組。插入到arr中的值

如果values的數(shù)據(jù)類型和arr的數(shù)據(jù)類型不同,values會(huì)被自動(dòng)轉(zhuǎn)換為arr的數(shù)據(jù)類型

values的形狀應(yīng)使 arr[…,obj,…] = values 合法

  • axis:整數(shù),可選參數(shù)。指示values沿著哪個(gè)軸插入

axis = None:arr會(huì)先被展平,類似numpy.delete函數(shù)

>>> arr = np.array([[1,2,3,4], [5,6,7,8], [9,10,11,12]])
>>> arr
array([[ 1,  2,  3,  4],
       [ 5,  6,  7,  8],
       [ 9, 10, 11, 12]])

# obj參數(shù)
>>> np.insert(arr,1,0,axis=1)
array([[ 1,  0,  2,  3,  4],
       [ 5,  0,  6,  7,  8],
       [ 9,  0, 10, 11, 12]])

>>> np.insert(arr,1,[1,2,3],axis=1) # values的形狀應(yīng)使 arr[...,obj,...] = values 合法
array([[ 1,  1,  2,  3,  4],
       [ 5,  2,  6,  7,  8],
       [ 9,  3, 10, 11, 12]])

>>> np.insert(arr,[1,2],np.array([[1,2],[3,4],[5,6]]),axis=1) # values的形狀應(yīng)使 arr[...,obj,...] = values 合法
array([[ 1,  1,  2,  2,  3,  4],
       [ 5,  3,  6,  4,  7,  8],
       [ 9,  5, 10,  6, 11, 12]])

>>> np.insert(arr,[1],[1,2,3],axis=1)
array([[ 1,  1,  2,  3,  2,  3,  4],
       [ 5,  1,  2,  3,  6,  7,  8],
       [ 9,  1,  2,  3, 10, 11, 12]])

# values參數(shù)
>>> np.insert(arr,1,[1.5,2,True],axis=1)
array([[ 1,  1,  2,  3,  4],
       [ 5,  2,  6,  7,  8],
       [ 9,  1, 10, 11, 12]])

# axis參數(shù)
>>> np.insert(arr,1,0,axis=0)
array([[ 1,  2,  3,  4],
       [ 0,  0,  0,  0],
       [ 5,  6,  7,  8],
       [ 9, 10, 11, 12]])

>>> np.insert(arr,1,0)
array([ 1,  0,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12])

注釋:特別注意numpy.insert(obj = some_integer)與numpy.insert(obj = [some_integer])的區(qū)別。

3. append

numpy.append(arr, values, axis=None):添加值到數(shù)組的末尾

  • arr:類數(shù)組。操作對(duì)象
  • values:類數(shù)組 values的形狀必須正確
  • axis:整數(shù),可選參數(shù)。指示values沿著哪個(gè)軸添加到arr末尾
  • axis = None:arr會(huì)先被展平,類似numpy.delete和numpy.insert函數(shù)
>>> arr = np.array([[1,2,3,4], [5,6,7,8], [9,10,11,12]])
>>> arr
array([[ 1,  2,  3,  4],
       [ 5,  6,  7,  8],
       [ 9, 10, 11, 12]])

# values參數(shù)
>>> np.append(arr,[13,14,15,16],axis=0)
ValueError: all the input arrays must have same number of dimensions, but the array 
at index 0 has 2 dimension(s) and the array at index 1 has 1 dimension(s)

>>> np.append(arr,np.array([[13,14,15,16]]),axis=0)
array([[ 1,  2,  3,  4],
       [ 5,  6,  7,  8],
       [ 9, 10, 11, 12],
       [13, 14, 15, 16]])

>>> np.append(arr,[5,9,13],axis=1)
ValueError: all the input arrays must have same number of dimensions, but the array 
at index 0 has 2 dimension(s) and the array at index 1 has 1 dimension(s)

>>> np.append(arr,np.array([[5],[9],[13]]),axis=1)
array([[ 1,  2,  3,  4,  5],
       [ 5,  6,  7,  8,  9],
       [ 9, 10, 11, 12, 13]])

# axis參數(shù)
>>> np.append(arr,[13,14,15,16])
array([ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16])

注釋: 特別注意values參數(shù)的形狀。

4. resize

numpy.resize(a, new_shape):返回具有指定形狀的新數(shù)組

  • a:類數(shù)組。操作對(duì)象
  • new_shape:整數(shù)或整數(shù)序列。調(diào)整大小后的數(shù)組的形狀

如果新數(shù)組比原始數(shù)組大,那么新數(shù)組會(huì)用重復(fù)的原始數(shù)組來填充,這時(shí)會(huì)按照C語(yǔ)言的順序重復(fù)遍歷數(shù)組

>>> arr = np.array([[1,2,3,4], [5,6,7,8], [9,10,11,12]])
>>> arr
array([[ 1,  2,  3,  4],
       [ 5,  6,  7,  8],
       [ 9, 10, 11, 12]])

>>> np.resize(arr,(4,3))
array([[ 1,  2,  3],
       [ 4,  5,  6],
       [ 7,  8,  9],
       [10, 11, 12]])

>>> np.resize(arr,(4,4))
array([[ 1,  2,  3,  4],
       [ 5,  6,  7,  8],
       [ 9, 10, 11, 12],
       [ 1,  2,  3,  4]])

>>> np.resize(arr,(3,5))
array([[ 1,  2,  3,  4,  5],
       [ 6,  7,  8,  9, 10],
       [11, 12,  1,  2,  3]])

>>> np.resize(arr,(3,3))
array([[1, 2, 3],
       [4, 5, 6],
       [7, 8, 9]])

注釋:

numpy.resize沒有單獨(dú)考慮各個(gè)軸,因此其不適用于插值/外推。所以,numpy.resize不適用于調(diào)整圖像或數(shù)據(jù)的大小,其中每個(gè)軸代表一個(gè)單獨(dú)的不同實(shí)體。

numpy.resize和ndarray.resize的區(qū)別:

  • numpy.resize返回原始數(shù)據(jù)的副本,而ndarray.resize是對(duì)原始數(shù)據(jù)原地(in-place)修改
  • numpy.resize是用原始數(shù)組來填充,而ndarray是用0來填充
>>> arr = np.array([[1,2,3,4], [5,6,7,8], [9,10,11,12]])
>>> arr
array([[ 1,  2,  3,  4],
       [ 5,  6,  7,  8],
       [ 9, 10, 11, 12]])
       
>>> np.resize(arr,[3,5])
array([[ 1,  2,  3,  4,  5],
       [ 6,  7,  8,  9, 10],
       [11, 12,  1,  2,  3]])
>>> arr
array([[ 1,  2,  3,  4],
       [ 5,  6,  7,  8],
       [ 9, 10, 11, 12]])

>>> arr.resize(3,5,refcheck=False)
>>> arr
array([[ 1,  2,  3,  4,  5],
       [ 6,  7,  8,  9, 10],
       [11, 12,  0,  0,  0]])```

numpy.resize和numpy.reshape的區(qū)別

  • numpy.resize中新數(shù)組的形狀可以和原始數(shù)組不兼容,而numpy.reshape中新數(shù)組的形狀必須和原始數(shù)組兼容
  • numpy.resize返回的是原始數(shù)組的副本,而numpy.reshape返回的是原始數(shù)組的視圖 
>>> arr = np.array([[1,2,3,4], [5,6,7,8], [9,10,11,12]])
>>> arr
array([[ 1,  2,  3,  4],
       [ 5,  6,  7,  8],
       [ 9, 10, 11, 12]])
>>> id(arr)
2040077636592
>>> arr.ctypes.data
2039348516176

>>> arr_reshape = np.reshape(arr,(4,3))
>>> arr_reshape
array([[ 1,  2,  3],
       [ 4,  5,  6],
       [ 7,  8,  9],
       [10, 11, 12]])
>>> id(arr_reshape)
2040077636832
>>> arr_reshape.ctypes.data
2039348516176

>>> arr_resize = np.resize(arr,(4,3))
>>> arr_resize
array([[ 1,  2,  3],
       [ 4,  5,  6],
       [ 7,  8,  9],
       [10, 11, 12]])
>>> id(arr_resize)
2040077636752
>>> arr_resize.ctypes.data
2039348513616

>>> arr[0][0] = 0
>>> arr
array([[ 0,  2,  3,  4],
       [ 5,  6,  7,  8],
       [ 9, 10, 11, 12]])
>>> arr_reshape
array([[ 0,  2,  3],
       [ 4,  5,  6],
       [ 7,  8,  9],
       [10, 11, 12]])
>>> arr_resize
array([[ 1,  2,  3],
       [ 4,  5,  6],
       [ 7,  8,  9],
       [10, 11, 12]])

5. trim_zeros

numpy.trim_zeros(filt, trim=‘fb’):修剪一維數(shù)組或序列開頭和/或尾部的0

filt:一維數(shù)組或序列

trim:字符串,可選參數(shù)

  • ‘f’:修剪一維數(shù)組或序列開頭的0
  • ‘b’:修剪一維數(shù)組或序列尾部的0
  • ‘fb’:修剪一維數(shù)組或序列開頭和尾部的0(默認(rèn)值)
>>> arr = np.array([0, 0, 0, 1, 2, 3, 0, 2, 1, 0, 0])
>>> arr
array([0, 0, 0, 1, 2, 3, 0, 2, 1, 0, 0])

>>> np.trim_zeros(arr)
array([1, 2, 3, 0, 2, 1])
>>> np.trim_zeros(arr,trim='f')
array([1, 2, 3, 0, 2, 1, 0, 0])
>>> np.trim_zeros(arr,trim='b')
array([0, 0, 0, 1, 2, 3, 0, 2, 1])

>>> list1 = [0, 0, 0, 1, 2, 3, 0, 2, 1, 0, 0]
>>> np.trim_zeros(list1)
[1, 2, 3, 0, 2, 1]
>>> np.trim_zeros(list1,trim='f')
[1, 2, 3, 0, 2, 1, 0, 0]
>>> np.trim_zeros(list1,trim='b')
[0, 0, 0, 1, 2, 3, 0, 2, 1]

6. unique

numpy.unique(ar, return_index=False, return_inverse=False, return_counts=False, axis=None):查找數(shù)組唯一的元素,返回?cái)?shù)組排序后的唯一的元素

參數(shù):

  • ar:類數(shù)組
  • return_index:布爾值,可選參數(shù)
  • True:返回一個(gè)一維的數(shù)組unique_indices,其中每個(gè)元素表示每個(gè)排序后的唯一值在原始數(shù)組ar中的索引
  • return_inverse:布爾值,可選參數(shù)
  • True:返回一個(gè)一維的數(shù)組unique_inverse,其中每個(gè)元素表示原始數(shù)組ar中每個(gè)元素在返回的數(shù)組中的索引,用于重建原始數(shù)組
  • return_counts:布爾值,可選參數(shù)
  • True:返回一個(gè)一維的數(shù)組unique_counts,其中每個(gè)元素表示每個(gè)排序后的唯一值在原始數(shù)組中出現(xiàn)的次數(shù)
  • axis:整數(shù)或None,可選參數(shù)
  • None:原始數(shù)組ar會(huì)被展平

返回:

  • unique:ndarray對(duì)象,排序后的唯一值
  • unique_indices:ndarray對(duì)象(長(zhǎng)度和unique一致),return_index為True時(shí)才返回
  • unique_inverse:ndarray對(duì)象(長(zhǎng)度和展品后的原始數(shù)組一致),return_inverse為True時(shí)才返回
  • unique_counts:ndarray對(duì)象,return_counts為True時(shí)才返回
>>> arr = np.array([[1,2,3,4], [5,6,7,8], [5,6,7,8], [9,10,11,12]])
>>> arr
array([[ 1,  2,  3,  4],
       [ 5,  6,  7,  8],
       [ 5,  6,  7,  8],
       [ 9, 10, 11, 12]])

>>> arr_unique, arr_index, arr_inverse, arr_counts = np.unique(arr, return_index=True, return_inverse=True, return_counts=True)
>>> arr_unique
array([ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12])
>>> arr_index
array([ 0,  1,  2,  3,  4,  5,  6,  7, 12, 13, 14, 15], dtype=int64)
>>> arr_inverse
array([ 0,  1,  2,  3,  4,  5,  6,  7,  4,  5,  6,  7,  8,  9, 10, 11],
      dtype=int64)
>>> arr_counts
array([1, 1, 1, 1, 2, 2, 2, 2, 1, 1, 1, 1], dtype=int64)

# unique = arr.flatten()[index]
>>> arr.flatten()[arr_index]
array([ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12])

# arr = unique[inverse].reshape(arr.shape)
>>> arr_unique[arr_inverse].reshape(arr.shape)
array([[ 1,  2,  3,  4],
       [ 5,  6,  7,  8],
       [ 5,  6,  7,  8],
       [ 9, 10, 11, 12]])

>>> arr_unique_0, arr_index_0, arr_inverse_0, arr_counts_0 = np.unique(arr, return_index=True, return_inverse=True, return_counts=True,axis=0)
>>> arr_unique_0
array([[ 1,  2,  3,  4],
       [ 5,  6,  7,  8],
       [ 9, 10, 11, 12]])
>>> arr_index_0
array([0, 1, 3], dtype=int64)
>>> arr_inverse_0
array([0, 1, 1, 2], dtype=int64)
>>> arr_counts_0
array([1, 2, 1], dtype=int64)

>>> arr_unique_1, arr_index_1, arr_inverse_1, arr_counts_1 = np.unique(arr, return_index=True, return_inverse=True, return_counts=True,axis=1)
>>> arr_unique_1
array([[ 1,  2,  3,  4],
       [ 5,  6,  7,  8],
       [ 5,  6,  7,  8],
       [ 9, 10, 11, 12]])
>>> arr_index_1
array([0, 1, 2, 3], dtype=int64)
>>> arr_inverse_1
array([0, 1, 2, 3], dtype=int64)
>>> arr_counts_1
array([1, 1, 1, 1], dtype=int64)

注釋: 本篇中所有函數(shù)都會(huì)先對(duì)待操作數(shù)組進(jìn)行拷貝,再進(jìn)行操作。

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • python快速排序代碼實(shí)例

    python快速排序代碼實(shí)例

    這篇文章主要介紹了python快速排序的代碼實(shí)例,大家參考使用吧
    2013-11-11
  • python計(jì)算RPKM操作示例詳解

    python計(jì)算RPKM操作示例詳解

    這篇文章主要為大家介紹了python計(jì)算RPKM操作示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-07-07
  • Python簡(jiǎn)易版停車管理系統(tǒng)

    Python簡(jiǎn)易版停車管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了Python如何實(shí)現(xiàn)簡(jiǎn)易版停車管理系統(tǒng),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-08-08
  • 分享Pytorch獲取中間層輸出的3種方法

    分享Pytorch獲取中間層輸出的3種方法

    這篇文章主要給大家分享了Pytorch獲取中間層輸出的3種方法,文章內(nèi)容介紹詳細(xì),需要的小伙伴可以參考一下,希望對(duì)你的學(xué)習(xí)或工作有所幫助
    2022-03-03
  • python抓取京東小米8手機(jī)配置信息

    python抓取京東小米8手機(jī)配置信息

    這篇文章主要為大家詳細(xì)介紹了python抓取京東手機(jī)配置信息,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-11-11
  • 深入理解Python虛擬機(jī)之進(jìn)程、線程和協(xié)程區(qū)別詳解

    深入理解Python虛擬機(jī)之進(jìn)程、線程和協(xié)程區(qū)別詳解

    在本篇文章當(dāng)中深入分析在 Python 當(dāng)中 進(jìn)程、線程和協(xié)程的區(qū)別,這三個(gè)概念會(huì)讓人非常迷惑,如果沒有深入了解這三者的實(shí)現(xiàn)原理,只是看一些文字說明,也很難理解,在本篇文章當(dāng)中我們將通過分析部分源代碼來詳細(xì)分析一下這三者根本的區(qū)別是什么,需要的朋友可以參考下
    2023-10-10
  • Python中chinesecalendar簡(jiǎn)介、安裝、使用方法詳細(xì)講解

    Python中chinesecalendar簡(jiǎn)介、安裝、使用方法詳細(xì)講解

    這篇文章主要介紹了Python中chinesecalendar簡(jiǎn)介、安裝、使用方法詳細(xì)講解,該庫(kù)是判斷某年某月某一天是不是工作日/節(jié)假日。 支持 2004年 至 2023年,包括 2020年 的春節(jié)延長(zhǎng),需要的朋友可以參考下
    2023-03-03
  • Python turtle庫(kù)繪制菱形的3種方式小結(jié)

    Python turtle庫(kù)繪制菱形的3種方式小結(jié)

    今天小編就為大家分享一篇Python turtle庫(kù)繪制菱形的3種方式小結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • Python中CairoSVG庫(kù)的使用教程

    Python中CairoSVG庫(kù)的使用教程

    CairoSVG是一個(gè)強(qiáng)大的Python庫(kù),用于將SVG圖像轉(zhuǎn)換為PNG、PDF、PS等格式,本文就來介紹一下Python中CairoSVG庫(kù)的使用教程,感興趣的可以了解一下
    2025-01-01
  • Python?Pygame實(shí)現(xiàn)可控制的煙花游戲

    Python?Pygame實(shí)現(xiàn)可控制的煙花游戲

    大家好,本篇文章主要講的是Python?Pygame實(shí)現(xiàn)可控制的煙花游戲,感興趣的同學(xué)趕快來看一看吧,對(duì)你有幫助的話記得收藏一下
    2022-01-01

最新評(píng)論