草庐IT

matrix_add

全部标签

Matrix 上的 Python PCA 太大而无法放入内存

我有一个100,000行x27,000列的csv,我正在尝试对其进行PCA以生成100,000行X300列的矩阵。csv有9GB大。这是我目前正在做的事情:fromsklearn.decompositionimportPCAasRandomizedPCAimportcsvimportsysimportnumpyasnpimportpandasaspddataset=sys.argv[1]X=pd.DataFrame.from_csv(dataset)Y=X.pop("Y_Level")X=(X-X.mean())/(X.max()-X.min())Y=list(Y)dimensions

python - 将一列零添加到 csr_matrix

我有一个MxN稀疏csr_matrix,我想在矩阵的右侧添加一些只有零的列。原则上,数组indptr、indices和data保持不变,所以我只想改变矩阵的维度。但是,这似乎没有实现。>>>A=csr_matrix(np.identity(5),dtype=int)>>>A.toarray()array([[1,0,0,0,0],[0,1,0,0,0],[0,0,1,0,0],[0,0,0,1,0],[0,0,0,0,1]])>>>A.shape(5,5)>>>A.shape=((5,7))NotImplementedError:Reshapingnotimplementedforcs

python - igraph:有属性时如何使用add_edges?

如果我需要在igraph中创建一个图并添加一堆边,但边具有关联的属性怎么办?看起来.add_edges只能获取没有属性的边列表,所以我一直在用.add_edge一个一个地添加它们 最佳答案 graph.add_edge('A','B',weight=20)这里A和B是节点的名字 关于python-igraph:有属性时如何使用add_edges?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/que

c# - 具有完整子结构的矩阵的 "Matrix decomposition"

在开始之前,我必须说,对于那些具有线性代数背景的人来说,这不是您所知道的矩阵分解。请阅读以下段落以更清楚地了解我要解决的问题。以下是矩阵及其子矩阵的显着属性/定义:我有一个SxP矩阵,它形成了一个类似S.P“盒子”结构的网格。这是主矩阵.这就是(空)主矩阵的样子。矩阵中的每个正方形都简称为一个盒子。矩阵可以被视为一种“游戏板”,例如一个棋盘。纵轴使用区间标度(即实数)测量,水平轴使用单调递增的非负整数测量。还有一个额外的子矩阵概念(如前所述)。子矩阵只是特定配置中的盒子的集合,并具有指定给盒子的特定数量和块类型(参见下面的黑色和白色块)。我有这些的有限集子矩阵-我称之为我的lexico

python Pandas : Add column to grouped DataFrame with method chaining

首先让我说我是pandas的新手。我正在尝试在DataFrame中创建一个新列。我能够按照我的示例中所示执行此操作。但我想通过链接方法来做到这一点,所以我不必分配新变量。首先让我展示一下我想要实现的目标,以及到目前为止我做了什么:In[1]:importnumpyasnpfrompandasimportSeries,DataFrameimportpandasaspdIn[2]:np.random.seed(10)df=pd.DataFrame(np.random.randint(1,5,size=(10,3)),columns=list('ABC'))dfOut[2]:ABC22141

python - Pandas 数据框 : add & remove prefix/suffix from all cell values of entire dataframe

要为数据框添加前缀/后缀,我通常会执行以下操作。比如添加后缀'@',df=df.astype(str)+'@'这基本上为所有单元格值附加了一个'@'。我想知道如何去掉这个后缀。pandas.DataFrame类是否有直接从整个DataFrame中删除特定前缀/后缀字符的方法?我试过在使用rstrip('@')时遍历行(作为系列),如下所示:forindexinrange(df.shape[0]):row=df.iloc[index]row=row.str.rstrip('@')现在,为了从这个系列中制作数据框,new_df=pd.DataFrame(columns=list(df))n

python - 将 numpy.matrix 转换为 C 双指针的正确方法

将numpy矩阵作为参数传递给采用双指针的C函数的规范方法是什么?上下文:我正在使用numpy来验证一些C代码,我有一个C函数,它接受一个constdouble**const,我正在使用ctypes从Python调用.so。我试过:func.argtypes=ctypeslib.ndpointer(dtype=double,ndim=2,flags="C_CONTIGUOUS")并直接传递numpy矩阵(没用),以及func.argtypes=ctypes.POINTER(ctypes.POINTER(ctypes.c_double))然后通过各种转换传递numpy矩阵。转换导致Pyt

python NumPy : how to construct a big diagonal array(matrix) from two small array

importnumpyasnpA=np.array([[1,2],[3,4]])B=np.array([[5,6],[7,8]])C=np.array([[1,2,0,0],[3,4,0,0],[0,0,5,6],[0,0,7,8]])我想直接从A和B制作C,有什么简单的方法可以构造对角线数组C?谢谢。 最佳答案 方法#1:一种简单的方法是使用np.bmat-Z=np.zeros((2,2),dtype=int)#Createoff-diagonalzerosarrayout=np.asarray(np.bmat([[A,Z],[Z

java - "add to set"在 java 中返回一个 boolean 值 - python 呢?

在Java中,我喜欢使用“添加到集合”操作返回的boolean值来测试元素是否已经存在于集合中:if(set.add("x")){print"xwasnotyetintheset";}我的问题是,在Python中有没有同样方便的东西?我试过了z=set()if(z.add(y)):printsomething但是它不打印任何东西。我错过了什么吗?谢谢! 最佳答案 在Python中,set.add()方法不返回任何内容。您必须使用notin运算符:z=set()ifynotinz:#Iftheobjectisnotinthelisty

python 3 : Multiply a vector by a matrix without NumPy

我是Python的新手,正在尝试创建一个函数来将向量乘以矩阵(任意列大小)。例如:multiply([1,0,0,1,0,0],[[0,1],[1,1],[1,0],[1,0],[1,1],[0,1]])[1,1]这是我的代码:defmultiply(v,G):result=[]total=0foriinrange(len(G)):r=G[i]forjinrange(len(v)):total+=r[j]*v[j]result.append(total)returnresult问题是,当我尝试选择矩阵(r[j])中每一列的第一行时,会显示错误“列表索引超出范围”。有没有其他方法可以不使