我试图理解python乘法运算符。我总是假设它在执行以下操作时执行了一个点积
a * b
然而,下面的例子显示,产生了不同的形状。
a = np.random.random((3, 3))
b = np.array([1,0,1])
乘法运算符:
(a*b).shape
(3, 3)
Numpy点产品:
np.dot(a,b).shape
(3,)
乘法运算符在做什么数学运算?
这就是我从3个小时以来一直在挣扎的问题;/在使用numpy的python中,我做简单的乘法,比如:
matrix.T * matrix
,其中m是我的矩阵,但即使在我的大脑中一切正常(大小匹配适当),我仍然会收到错误消息:
operands could not be broadcast together with shapes (5,20) (20,5)
为什么会这样呢?20和20不匹配吗?我怎么了,D?
提前感谢
我遇到了一个很奇怪的问题。我使用多维列表来存储一些数据.数据在一个.txt文件中,每一行有9位数,它有450行数据。对于每9行数据( 9x9位网格),我想将它们分组为子列表。我使用下面的代码来存储数据,我的问题是当我完成并打印多维列表时,列表中的每一行数据似乎都是相同的。对不起,我的描述很差,也许我的代码能告诉我所有的事情,请告诉我代码有什么问题。我在Windows上使用python2.7.5,谢谢。
# grid is a 3-dimension list, the first dimension is the index of 9x9 digit subgrid
# there are 5
在当前的项目中,我有一个大的多维数组的形状(I,J,K,N)和一个方阵的dim N。
我需要将数组的最后一个轴与方阵进行矩阵向量乘法。
因此,显而易见的解决方案是:
for i in range(I):
for j in range(J):
for k in range(K):
arr[i,j,k] = mat.dot(arr[i,j,k])
但这当然是相当慢的。所以我也尝试了numpy的tensordot,但收效甚微。我希望是这样的:
arr = tensordot(mat,arr,axes=((0,1),(3)))
应该可以做到这一点,但是
我试图用形状(41)和(41,6)将2矩阵x,y相乘,因为它应该将单个矩阵广播给多维中的每个箭头。
我想这样做:
x*y
但我知道这个错误
ValueError: operands could not be broadcast together with shapes (41,6) (41,)
我在这有什么好怀念的吗?
目前,我的代码完全是使用numpy数组np.array编写的。
将m定义为100个值的np.array,m.shape = (100,)。还有一个多维数组,C.shape = (100,100).
我想计算的运算是
m^T * C * m
其中m^T应为形状(1,100),m为形状(100,1),C应为形状(100,100)。
我不知道该怎么继续下去。如果我坚持数据类型必须保持为np.arrays,那么我可能需要您numpy.dot()或numpy.tensordot()并指定轴。那就像是
import numpy as np
result = np.dot(C, m)
final = np
我想存储多维数组,它存储类似python的内容。目前,它看起来像是:
a = [[{'col':i,'row':j} for i in range(9)] for j in range(9)]
我知道,numpy是完美的,如果你想做数学,比如处理矩阵。我想快点做的事:
多维索引访问
使用多维索引更改值
我不知道如何处理普通的Python列表。因为就像
idx = [2,3]
print(a[idx])
根本不存在,对吧?它应该打印出{'row':2,'col':3}
谢谢您的想法,如果numpy是更好的选择:如何
在C# 8.0中,为什么可以在一维数组上使用范围:
var oneDim = new int[5];
var oneDimSlice = oneDim[2..4];
但不能在多维数组上使用它?
var twoDim = new int[5, 5];
var twoDimSlice = twoDim[2..4, 2..4];
我正在创建一个游戏,当游戏开始时,当游戏开始时,一个立方体被复制为GridSize * GridSize。现在,在多维数据集被复制之后,我想从另一个脚本组件(假设我有一个生成克隆的多维数据集的Prefab )中附加一个变量到它们上,比如“标志”,它是一个bool。
总之,我有这样一件事:
CreateTiles.cs :附在预制件上
void Start() {
createMyTiles(); // a function that clones the tiles
flagRandomTiles(); // a function that (what I'm tryi