草庐IT

python - 沿给定轴将 numpy ndarray 与一维数组相乘

看来我迷失在一些可能很愚蠢的事情中。我有一个n维numpy数组,我想将它与沿某个维度(可以改变!)的向量(一维数组)相乘。例如,假设我想沿第一个数组的轴0将一个二维数组乘以一个一维数组,我可以这样做:a=np.arange(20).reshape((5,4))b=np.ones(5)c=a*b[:,np.newaxis]很简单,但我想将这个想法扩展到n维(对于a,而b始终是1d)和任何轴。换句话说,我想知道如何在正确的位置生成带有np.newaxis的切片。假设a是3d,我想沿axis=1相乘,我想生成正确给出的切片:c=a*b[np.newaxis,:,np.newaxis]即给定a

列表切片中的 Python 索引超出范围

这个问题在这里已经有了答案:Whydoessubstringslicingwithindexoutofrangework?(3个答案)关闭9年前。虽然这段代码会引发indexError:In[1]:lst=[1,2,3]In[2]:lst[3]IndexError:listindexoutofrange使用“索引超出范围”对列表进行切片不会产生任何错误。In[3]:lst[3:]Out[3]:[]这种设计的基本原理是什么?

python - 为什么 slice [ :-0] return empty list in Python

今天在编写一些单元测试时偶然发现了一些有点令人困惑的事情:blah=['a','b','c']blah[:-3]#[]blah[:-2]#['a']blah[:-1]#['a','b']blah[:-0]#[]我这辈子都想不通为什么blah[:-0]#[]应该是这样,模式似乎肯定表明它应该是['a','b','c']。任何人都可以帮助阐明为什么会这样吗?无法在文档中找到关于为什么会出现这种情况的提及。 最佳答案 -0是0,从list开始到索引0的切片>non-inclusive是一个空的list。

python - 如何从列表中切片中间元素

相当简单的问题。假设我有一个像这样的列表:a=[3,4,54,8,96,2]我可以使用切片来省略列表中间的元素来生成这样的结果吗?a[some_slicing][3,4,8,96,2]元素54是否被遗漏了。我猜这会成功:a[:2:]但结果不是我所期望的:[3,4] 最佳答案 你不能用单个切片模拟弹出,因为切片只给你一个开始和结束索引。但是,您可以使用两个切片:>>>a=[3,4,54,8,96,2]>>>a[:2]+a[3:][3,4,8,96,2]你可以把它包装成一个函数:>>>defcutout(seq,idx):"""Remo

python - Cython:将单个元素分配给多维内存 View 切片

每当我将单个值分配给多维内存View的切片时,Cython似乎使用了错误的步幅,除非切片沿着第一维。我在下面给出一个完整的例子:#bug.pyimportnumpyasnpdefbug():#cdefint[:,::1]aa=2*np.ones((2,2),dtype=np.intc)a[:,:1]=1print(np.asarray(a))如果我们在Python中运行它(例如python3-c'importbug;bug.bug()'),我们得到[[12][12]]如预期的那样打印出来。我现在通过将文件重命名为bug.pyx用Cython编译它,将以下内容保存在同一目录的Makefi

python - 计算任意维度数组的外积

我有两个数组A,B并且想在它们的最后一个维度上取外积,例如结果[:,i,j]=A[:,i]*B[:,j]当A,B是二维的。如果我不知道它们是2维还是3维,我该怎么做?在我的具体问题中,A,B是一个更大的3维数组Z的切片,有时这可能会用整数索引A=Z[:,1,:],B=Z[:,2,:]和其他时间调用带有切片A=Z[:,1:3,:],B=Z[:,4:6,:]。由于scipy“挤压”单例维度,我不知道我的输入是什么维度会的。我试图定义的数组外积应该满足array_outer_product(Y[a,b,:],Z[i,j,:])==scipy.outer(Y[a,b,:],Z[i,j,:])a

python - numpy 如何排序数组切片索引?

我有一个形状为(28,8,20)的np.arraydata,我只需要其中的某些条目,所以我要切片:In[41]:index=np.array([5,6,7,8,9,10,11,17,18,19])In[42]:extract=data[:,:,index]In[43]:extract.shapeOut[43]:(28,8,10)到目前为止一切顺利,一切都应该如此。但现在我只想查看第一行最后一个索引中的前两个条目:In[45]:extract[0,:,np.array([0,1])].shapeOut[45]:(2,8)等等,应该是(8,2)。它改变了索引,即使我上次切片时它没有!根据我

python - Numpy 多维数组索引交换轴顺序

我正在处理多维Numpy数组。当使用其他索引数组访问这些数组时,我注意到一些不一致的行为。例如:importnumpyasnpstart=np.zeros((7,5,3))a=start[:,:,np.arange(2)]b=start[0,:,np.arange(2)]c=start[0,:,:2]print'a:',a.shapeprint'b:',b.shapeprint'c:',c.shape在这个例子中,我得到了结果:a:(7,5,2)b:(2,5)c:(5,2)这让我很困惑。为什么“b”和“c”的尺寸不同?为什么“b”交换轴顺序,而不是“a”?由于大量的单元测试,我已经能够

python - 保留 Numpy 3d 数组中切片的尺寸

我有一个3d数组,a,形状为a.shape=(10,10,10)切片时,维度会自动压缩,即a[:,:,5].shape=(10,10)我想保留维数,但还要确保被压缩的维是显示1的维,即a[:,:,5].shape=(10,10,1)我考虑过重新转换数组并传递ndmin但这只是将额外的维度添加到形状元组的开头,而不管切片来自数组a。 最佳答案 a[:,:,[5]].shape#(10,10,1)a[:,:,5]是basicslicing的一个例子.a[:,:,[5]]是integerarrayindexing的一个例子--combin

python - 如何根据日期时间索引对 Pandas Dataframe 进行切片

这个问题困扰我很久了:给定一个简单的pandasDataFrame>>>dfTimestampCol12008-08-010.0013732008-09-010.0401922008-10-010.0277942008-11-010.0125902008-12-010.0263942009-01-010.0085642009-02-010.0077142009-03-01-0.0197272009-04-010.0088882009-05-010.0398012009-06-010.0100422009-07-010.0209712009-08-010.0119262009-09-01