python numpy数组中的复制问题

vector = numpy.array([5, 10, 15, 20])
equal_to_ten_or_five = (vector == 10) | (vector == 5)
vector[equal_to_ten_or_five] = 50
print(vector)

 

第一次看到这个的时候一脸懵逼,后来分析了下懂了下面记录下,方便下次看看

第一行分析:
结果5, 10, 15, 20

第二行分析:
vector == 10 数组和值比对获得结果是每个元素和这个数比较生成相应的bool数组 这里的话就知道了结果是[Flase,True,Flase,Flase]
vector == 5就是[True,Flase,Flase,Flase]
然后进行或‘|‘运算得到了[True,True,Flase,Flase]
着两个数组进行或运算的时候是数组直接相同序号的元素或元素然后得到新的数组(遵循规则F|F =F,F|T=T,T|T=T)
此时equal_to_ten_or_five 就等于[True,True,Flase,Flase]
第三行分析:
vector[equal_to_ten_or_five]=50 会给等于True的复制为50 其他的不变也就是此时
vector等于[50,50,15,20]

时间: 2025-01-18 13:18:50

python numpy数组中的复制问题的相关文章

Python numpy数组扩展效率问题

Numpy库的ndarray数组可以方便地进行各种多维数据处理工作 可是它最大的缺点就是不可动态扩展--"NumPy的数组没有这种动态改变大小的功能,numpy.append()函数每次都会重新分配整个数组,并把原来的数组复制到新数组中."(引用自http://blog.chinaunix.net/uid-23100982-id-3164530.html) 场景: 今天用ndarray处理 42000 条数据时,就遇到了数组扩展的效率问题 文件名:train.csv(后附下载) 文件大

Python Numpy 数组扩展 repeat和tile

numpy.repeat 官方文档 numpy.repeat(a, repeats, axis=None) Repeat elements of an array. 可以看出repeat函数是操作数组中的每一个元素,进行元素的复制. 例如: >>> a = np.arange(3) >>> a array([0, 1, 2]) >>> np.repeat(a, 2) array([0, 0, 1, 1, 2, 2]) >>> a =

python/numpy/tensorflow中,对矩阵行列操作,下标是怎么回事儿?

Python中的list/tuple,numpy中的ndarrray与tensorflow中的tensor. 用python中list/tuple理解,仅仅是从内存角度理解一个序列数据,而非数学中标量,向量和张量. 从python内存角度理解,就是一个数值,长度为1,并且不是一个序列: 从numpy与tensorflow数学角度理解,就是一个标量,shape为(),其轴为0: [1,2,3,4,5,6] 从python内存角度理解,就是1*6或者长度为6的一个序列: 从numpy与tensorf

Python Numpy数组的读入、存储操作

从文件中加载ndarray数组 从文本文件中加载ndarray数组 np.loadtxt >>> np.loadtxt(textfile) # textfile是文本文件 从.npy或者.npz文件中加载ndarray数组np.load 如果是.npy结尾的文件,则返回单个ndarray数组 如果是.npz结尾的文件,则返回一个字典类型对象,{filename: array} >>> np.load(textfile) # textfile是.npz或.npy结尾的二进

python计算数组中对象出现的次数并且按照字典输出

解决的问题如题,如果对Python不是很熟悉,解决的办法可能如下: test_array=[1,2,3,1,2,3]; def count_object1(array): result_obj={} for item in test_array: count=0 for item_t in test_array: if item is item_t : count+=1 result_obj[item]=count return result_obj if __name__ == '__main

python删除数组中元素

有数组a,要求去掉a所有为0的元素 a = [2,4,0,8,9,10,100,0,9,7] Filter a= filter(None, a) Lambada a = filter(lambda x: x != 0, a) for for b in a: if b == 0: a.remove(b)

统计numpy数组中每个值的个数

import numpy as np from collections import Counter data = np.array([1.1,2,3,4,4,5]) Counter(data) #简单方法 sum(data==4) 原文地址:https://www.cnblogs.com/wzdLY/p/9630717.html

python 将数组中取某一值的元素全部替换为其他元素的方法

这里的问题是在做House Price Prediction的时候遇到的,尝试对GarageArea做log转化,但是由于有些房子没有车库,所以GarageArea = 0,再通过log转化变成-inf了,所以我想把所有-inf的数据全部再转化为0,如题目所示. 除了循环还可以怎么做呢?看下面的代码 train_test['GarageArea'] = np.log(train_test['GarageArea']) train_test['GarageArea'] = train_test['

剑指offer python版 数组中出现次数超过一半的数字

def aa(nums): if not nums: return False hashes={} ret=[] for s in nums: hashes[s]=hashes[s]+1 if hashes.get(s) else 1 if hashes[s] >len(nums)/2: ret.append(s) return list(set(ret)) print(aa([1,2,3,2,2,2,2,2,3,2,3,3,4])) 原文地址:https://www.cnblogs.com/x