我想定义一个NxN矩阵A,它的元素A(i,j)是sin(i^2 + j)。
在MATLAB中,我可以用矢量化方法快速地定义这个矩阵。
N = 2000;
ii = 1:N;
A = sin(ii.^2 + ii');
如何在Python中实现这一点?现在,我正在使用循环,这是缓慢的。
import numpy
N = 2000;
A = numpy.empty((N, N));
for i in range(1,N+1):
for j in range(1,N+1):
A[i-1][j-1] = numpy.sin(j + numpy.power(i, 2.
我正在处理Python中的一些电真皮数据,希望能够计算和绘制我的数据的z分数。我的数据被构造成csv中的一列。我已经成功地导入了这个文件并将其转化为一个列表,如下所示:
import csv
with open("1538130011EDA.csv",'rb') as f:
reader = csv.reader(f)
for row in reader:
print row
import numpy as np
EDAdata = np.genfromtxt('1538130011EDA.csv
我有一个像这样的三维numpy数组(举个例子)
a = np.array([
[[1, -2, 3, 4],[5, 6, 7, 8]],
[[9, 10, 11, 12],[13, 14, 15, 16]]
])
我只想将以下操作应用于列中的元素,其中索引1位于内部维度。上面的例子中的元素是[-2,6,10,14]。这些行动将是:
# variables used in the operations
v1, v2, v3 = 12, 4, 2
# the following two operations should only be applied to sp
我有以下函数,但是当我运行程序时,只有错误"size-1 array can converted to Python scalars“ import math as math
import numpy as np
def chebs(c, d, n):
k = np.array(range(n))
y = ((2*k +1)*np.pi)/(4*(n+1))
return c*math.sin(y)**2 + d*math.cos(y)**2 有没有办法绕过这个错误?我假设它来自于我在函数中使用的数学?
为什么numpy数组中的元素不相等?
这是我的env:
jupyter QtConsole 4.3.1
Python 2.7.13 |Anaconda custom (x86_64)| (default, Dec 20 2016, 23:05:08)
Type "copyright", "credits" or "license" for more information.
IPython 5.3.0 -- An enhanced Interactive Python.
? -> Introduction and ove
我希望能够在任意一个标量numpy一维数组,o numpy 2-D数组上应用一个泛型函数。这里的例子是
def stress2d_lefm_cyl(KI, r, qdeg) :
"""Compute stresses in Mode I around a 2D crack, according to LEFM
q should be input in degrees"""
sfactor = KI / sqrt(2*pi*r)
q = radians(qdeg)
q12 = q/2; q32
考虑一个一维NumPy输入数组和一个排序索引数组.目标是获得输入数组a的和,但被索引数组中定义的索引分割。
下面是两种方法,但这两种方法都需要缓慢的Python循环。是否有一个纯NumPy版本而不需要Python循环?
示例
a = np.arange(20) # Input array
idxs = np.array([7, 15, 16]) # Index array
# Goal: Split a at index 7, 15 and 16 and
# compute sum for each partition
# Solution 1:
idxs_ext = np.concate
我想以有效的方式对Numpy矩阵的每一行应用一个函数。我发现使用np.apply_along_matrix(function, 1, array)会给我想要的结果。然而,这是令人难以置信的慢,特别是当使用非常大的矩阵。
我知道,将函数映射到矩阵行的更有效和正确的方法是将其矢量化,但我不知道如何正确地向量化这个函数(请注意,我并不是指np.vectorize(function),因为这将适用于每个元素,而不是每一行)。
import numpy as np
def f(x):
return x * x.sum() # Multiply each element of a vector
当我编译以下程序时,Python抛出一个TypeError:只有整数标量数组可以转换为标量索引。
这似乎是一个相对简单的程序执行,但我似乎无法解决它。
频率
import matplotlib.pyplot as plt
import numpy as np
def period(n):
#masses
m = [1] * n
#lengths
l = [2] * n
M = sum(m)
num = 2 * math.pi * n
for i in range(n):
dem = dem + math.sqrt(g * m[i]/(
我试图将relu函数传递给numpy数组中的每个单独元素,当我用sigmoid函数尝试它时,它可以工作,但是对于relu函数,它返回:
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
relu功能:
def relu(x):
return max(0, x)
乙状体函数:
def sigmoid(x):
return 1 / (1 + np.exp(-x))
我尝试执行relu(myArray),但它返回valueErr
注意:我对表单‘只需使用循环’的答案不感兴趣,我想用numpyish的方式来做。
我是Python的初学者,我想使用numpy ndarray进行以下操作:给定一个数字序列t和另一个数字序列b,对于每一个t[i],我想计算列表t[i]*b并将其存储为一个最终数组中的一个新行。示例:
t = [3,4]
b = [1,2,3,4]
那么结果应该是某种形式的列表编码。
[
[3,6,9,12], # 3 * the array of b's
[4,8,12,16] # 4 * the array of b's
]
在我最近看到的一个程序中,这是完美的,但是当我想自己做它
我希望将numpy数组作为参数传递给函数?这是怎么做的?我可以像下面这样像变量一样简单地传递它吗?
def force(x,y,z):
for i in range(N):
for j in range(i+1,N,1):
xij=x[i]-x[j]
yij=y[i]-y[j]
zij=z[i]-z[j]
我正在尝试用Python实现一个分段函数。因为我使用了来自numpy的相当多的工具,所以我只是简单地从它导入所有东西(即from numpy import *)。我的分段函数定义为
LinQuad = piecewise( t, [t < 1, t >= 1], [lambda t : t, lambda t : t**2] )
这将导致错误NameError: global name 't' is not defined。我不明白为什么我要定义t -毕竟,没有必要为一个简单的lambda函数Lin = lambda t : t定义t。在某些示例中,定义了t的域,但