我有一个大小为(5,7,3)的矩阵A和一个大小为(5,3,8)的矩阵B。我想把它们相乘,C的大小是(5,7,8)。
这意味着矩阵A中的一个大小为(7,3)的二维子矩阵将分别与矩阵B中的一个大小为(3,8)的二维子矩阵相乘。所以我必须乘以5倍。
最简单的方法是使用循环和numpy:
for u in range(5):
C[u] = numpy.dot(A[u],B[u])
有没有办法不使用循环就能做到这一点呢?Theano中有没有等效的方法可以在不使用scan的情况下做到这一点?
我想找出2dnumpy数组中最大值的指标i,j:
a = numpy.array([[1,2,3],[4,3,1]])
我尝试使用numpy.argsort()来完成,但它返回一个数组,因为它只能沿着一个轴完成。一种解决方案是使用for循环比较argsort返回的所有索引(沿两个轴)的元素,但这看起来有点复杂。也许有一个简单的解决方案?
我使用Python和numpy已经有几个星期了。直到今天我才意识到
a = np.array([1,2,3])
b = np.array([[1,2], [3,4], [5,6]])
这两次计算得到了相同的结果
a @ b
b.T @ a
即使第一个在代数中没有意义(关于维度)。
所以我的问题是,.dot的算法在第一次计算中是如何工作的?或者numpy是如何考虑一维和N-D数组的?
这是我第一次尝试在numpy中使用大步,与不同过滤器上的简单迭代相比,它确实提高了速度,但是它仍然相当慢(感觉至少有一两件事情是完全多余的或效率低下的)。
因此,我的问题是:是否有更好的方法来执行此操作或对我的代码进行调整,使其显着地加快速度?
该算法对每个像素执行9个不同滤波器的局部评估,并选择具有最小标准差的滤波器(我试图实现Nagau和Matsuyma (1980)“复杂Areal照片的结构分析”,如一本图像分析书所述)。结果是一个平滑的和边缘锐化的图像(很酷,如果你问我!)
import numpy as np
from scipy import ndimage
from numpy.
我有一个将值转换为列表(或数组)的函数。如何使用它将N-D数组转换为另一个(N+1)-D数组?下面的代码需要生成一个列表,然后转换为。我想知道是否有更有效的方法(也许是的构造函数?)。 # # assume we have a function foo
# def foo(val):
# return [val*10, val*20 - 7]
# # how can we use this function to convert a N-D array to another (N+1)-D array?
# # here is my tried
import numpy as n
我有一个用例,并将其简化为以下问题:
import numpy as np
def get_matrix(i): # get a matrix N * M
return (
(i, i + 1, i + 1.2),
(i + 1, i / 2, i * 3.2),
(i / 3, i * 2, i / 4),
(i / 5, i * 2.1, i + 2.2),
)
K = 10000
# build a n-d array K * N * M
arr = np.array(
tuple(get_mat
当我看到一个例子时,我正在阅读numpy文档以获得更好的澄清,这个例子并不十分清楚。我从下面的numpy文档中复制了确切的示例:
a = np.arange(3*4*5*6).reshape((3,4,5,6))
b = np.arange(3*4*5*6)[::-1].reshape((5,4,6,3))
np.dot(a, b)[2,3,2,1,2,2]
问题是,在最后一行np.dot(a,b)[2,3,2,1,2,2]中,[2,3,2,1,2,2]在np.dot(a,b)后面做什么?
假设我有一个NumPy N维数组a和一个函数f(a),它返回a的任何复杂视图v,还有一个与v形状相同的数组b。 将b分配给v的最简单方法是什么?它们都可以是多维的。 向函数返回值赋值的最简单尝试失败,错误如下:SyntaxError: can't assign to function call import numpy as np
a, b = np.arange(10), np.arange(2)
a[2:4] = b # Working
f = lambda a: a[2:4] # Returns any view of a
f(a) = b # Not working, syn
我写了一个函数,当使用for循环时,这个函数太耗时了。它将numpy向量(10,0)作为行附加到每次迭代中。我如何使用向量化的numpy解决方案进行迭代来加快速度呢? 为什么下面的vstack-array解决方案比append-list解决方案还要慢? 提亚 import numpy as np
import time
n_iterations = 1000
n_cols = 10
def sample_func():
# Addition: please notice: the randon function is not important. It is only an e
我有一个火车数据集trainX和trainy。TrainX形状为(n,128,3) t形为(n,1)。
我想删除所有的样品,如果标签是零的。下面的代码工作了一半,但是numpy数组的一些维度丢失了。
# load the dataset, returns train and test X and y elements
def load_dataset_train_only(prefix='trainingData128/'):
# load all train
trainX, trainy = load_dataset_group('train'
如果我在一维上定义了两个切片对象,那么是否有可能将它们组合起来以获得一个多维切片对象,该对象可用于对numpy数组进行切片?
mat = np.zeros((10,10), dtype=np.uint8)
s1 = slice(0,5)
s2 = slice(0,5)
mat[s1,s2] # I want to achieve this effect with one slice object
slice2d = slice(s1, s2) # does not throw an error
mat[slice2d] # but this does not work
我试图找出像素的HSV值是否在正确的阈值内,但它引发了一个错误:
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
我想要做的是:
x, y = numpy.where(0.08196969696969696 >= img >= 0.1 and 0.7285714285714286 >= img >= 0.525 and 150 >= img >= 95)
如何在numpy数组中找到该阈值内的所有可能像
我有shape (2, s, t, ...)的numpy数组,我想将它们彼此相乘,这样输出就会有shape (2, ..., 2, s, t, ...) d d 2s。例如,使用d==3
import numpy
d = 3
a = numpy.random.rand(d, 2, 7, 8)
out = numpy.empty((2, 2, 2, 7, 8))
for i in range(2):
for j in range(2):
for k in range(2):
out[i, j, k] = a[0][i]*a[1][j]*a[2]
mat=[]
for x in np.linspace(x_min, x_max,num_x):
y=np.linspace(y_min, y_max,num_y)
mat.append(list(zip([x]*len(y),y)))
mat=np.array(mat)
我可以使用循环来完成上面的工作,但是我正在寻找一种更有效的方法。
考虑用于指定matplotlib绘图数据的典型numpy数组规范:
t = np.arange(0.0,1.5,0.25)
s = np.sin(2*np.pi*t)
基本上,这将(x,y)数据点的x坐标存储在数组t中;将结果y坐标( y=f(x)的结果,在本例中为sin(x))存储在数组s中。然后,可以非常方便地使用numpy.nditer函数在t和s中获得连续的条目对,表示数据点的(x,y)坐标,如下所示:
for x, y in np.nditer([t,s]):
print("xy: %f:%f" % (x,y))
因此,我尝试将以下代码片段作为test.py
i
我需要创建一个用空值填充的特定大小的数组mxn,以便当我对该数组执行concatenate操作时,初始值将被添加的值覆盖。
我当前的代码:
a = numpy.empty([2,2]) # Make empty 2x2 matrix
b = numpy.array([[1,2],[3,4]]) # Make example 2x2 matrix
myArray = numpy.concatenate((a,b)) # Combine empty and example arrays
不幸的是,我最终生成了一个4x2矩阵,而不是一个值为b的2x2矩阵。
有没有办法创建一个特定大小的
例如,出于速度方面的原因,我有一种误解,认为在Numpy中应该避免for循环 import numpy
a = numpy.array([[2,0,1,3],[0,2,3,1]])
targets = numpy.array([[1,1,1,1,1,1,1]])
output = numpy.zeros((2,1))
for i in range(2):
output[i] = numpy.mean(targets[a[i]]) 这是获得每行选定位置的平均值的好方法吗?感觉可能有一些方法可以先对数组进行切片,然后直接应用均值。