Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 表示矩阵数组的numpy_Python_Arrays_Numpy_Matrix - Fatal编程技术网

Python 表示矩阵数组的numpy

Python 表示矩阵数组的numpy,python,arrays,numpy,matrix,Python,Arrays,Numpy,Matrix,我有一个2x2复杂矩阵的数组,表示矩阵随时间的变换。对于我的计算,我需要一种方法来将这些数组相乘(矩阵相乘);将数组中的每个矩阵乘以另一个矩阵;将a应用于数组中的所有矩阵 我用numpy(4列数组、数组数组数组、矩阵数组、矩阵列表)尝试了多种方法,但每种方法都为一些必需的函数提供了一个很好的接口,这使得其余的都非常棘手 所以这里有一个问题-什么是表示这种结构的最佳方式,我将如何对它们执行所需的转换 例子 最初数据位于csv文件中: import numpy as np csv = np.aran

我有一个2x2复杂矩阵的数组,表示矩阵随时间的变换。对于我的计算,我需要一种方法来将这些数组相乘(矩阵相乘);将数组中的每个矩阵乘以另一个矩阵;将a应用于数组中的所有矩阵

我用
numpy
(4列数组、数组数组数组、矩阵数组、矩阵列表)尝试了多种方法,但每种方法都为一些必需的函数提供了一个很好的接口,这使得其余的都非常棘手

所以这里有一个问题-什么是表示这种结构的最佳方式,我将如何对它们执行所需的转换

例子 最初数据位于
csv
文件中:

import numpy as np
csv = np.arange(45.).reshape(5,9)
t = np.array(csv[:,0])  # time array
4列数组 将
csv
转换为4列数组:

data = np.apply_along_axis(lambda x: [x[1]+1j*x[2],
                                      x[3]+1j*x[4],
                                      x[5]+1j*x[6],
                                      x[7]+1j*x[8]],1,csv)
阵列x矩阵:

m = np.array([[1,0],[0,0]])
np.apply_along_axis(lambda x: (x.reshape(2,2).dot(m)).reshape(1,4),1,data)
m = np.array([[1,0],[0,0]])
[i.dot(m) for i in data]
m = np.array([[1,0],[0,0]])
data.dot(m)
阵列x阵列: 可能需要for循环和数组预分配

data * data # not a dot product
转变:

np.apply_along_axis(lambda x: [-(x[0]*x[3]-x[1]*x[2])/x[2],
                               x[0]/x[2],
                               -x[3]/x[2],
                               1/x[2]],1,data)
[np.array([[-(np.linalg.det(x))/x[0,1],
            x[0,0]/x[1,0]],
           [-x[1,1]/x[0,1],
            1/x[0,1]]]) for x in data]
数组列表 将
csv
转换为数组列表:

data = [np.array([[i[1]+1j*i[2],
                   i[3]+1j*i[4]],
                  [i[5]+1j*i[6],
                   i[7]+1j*i[8]]]) for i in csv]
阵列x矩阵:

m = np.array([[1,0],[0,0]])
np.apply_along_axis(lambda x: (x.reshape(2,2).dot(m)).reshape(1,4),1,data)
m = np.array([[1,0],[0,0]])
[i.dot(m) for i in data]
m = np.array([[1,0],[0,0]])
data.dot(m)
阵列x阵列:

[data[i].dot(data[i]) for i in range(len(data))]
转变:

np.apply_along_axis(lambda x: [-(x[0]*x[3]-x[1]*x[2])/x[2],
                               x[0]/x[2],
                               -x[3]/x[2],
                               1/x[2]],1,data)
[np.array([[-(np.linalg.det(x))/x[0,1],
            x[0,0]/x[1,0]],
           [-x[1,1]/x[0,1],
            1/x[0,1]]]) for x in data]
矩阵数组 将
csv
转换为矩阵数组:

data = np.apply_along_axis(lambda x: [[x[1]+1j*x[2],
                                       x[3]+1j*x[4]],
                                      [x[5]+1j*x[6],
                                       x[7]+1j*x[8]]],1,csv)
阵列x矩阵:

m = np.array([[1,0],[0,0]])
np.apply_along_axis(lambda x: (x.reshape(2,2).dot(m)).reshape(1,4),1,data)
m = np.array([[1,0],[0,0]])
[i.dot(m) for i in data]
m = np.array([[1,0],[0,0]])
data.dot(m)
阵列x阵列: 可能需要for循环和数组预分配

data * data # not a dot product
转变:
可能需要for循环和数组预分配

数组和矩阵是什么意思?在numpy中,我们有各种形状和尺寸的
ndarray
。在可能的情况下,坚持使用这些方法。你可以对它们进行整形、转置、广播数学和矩阵乘法。这需要一个。我建议从(n,2,2)数组开始,并演示如何执行各种操作。或者至少展示简单的问题,用困难的问题描述问题。@hpaulj补充了一些例子
data * data # not a dot product